|
If you can't view the Datasheet, Please click here to try to view without PDF Reader . |
|
Datasheet File OCR Text: |
* 8 AVR(R) * RISC - 131 - - 32 x 8 - - 16 MHz 16 MIPS - - 4/8/16K Flash (ATmega48/88/168) : 10,000 - Boot Boot - 256/512/512 EEPROM (ATmega48/88/168) : 100,000 - 512/1K/1K SRAM (ATmega48/88/168) - - 8 / - 16 / - RTC - PWM - 8 10 ADC(TQFP MLF ) - 6 10 ADC( PDIP ) - USART - / SPI - - - - MCU - - RC - / - ADC Standby I/O - 23 I/O - 32 TQFP 32 MLF : - ATmega48V/88V/168V1.8 - 5.5V - ATmega48/88/1682.7 - 5.5V : - -40C 85C : - ATmega48V/88V/168V: 0 - 2 MHz @ 1.8 - 5.5V, 0 - 8 MHz @ 2.4 - 5.5V - ATmega48/88/168: 0 - 8 MHz @ 2.7 - 5.5V, 0 - 16 MHz @ 4.5 - 5.5V - 1 MHz, 1.8V: 300A 32 kHz, 1.8V: 20A ( ) - : 1.8V 0.5A * * 8K Flash 8 ATmega48/V ATmega88/V ATmega168/V * * * * * * Rev. 2545A-AVR-09/03 1 Figure 1. ATmega48/88/168 PDIP (PCINT14/RESET) PC6 (PCINT16/RXD) PD0 (PCINT17/TXD) PD1 (PCINT18/INT0) PD2 (PCINT19/OC2B/INT1) PD3 (PCINT20/XCK/T0) PD4 VCC GND (PCINT6/XTAL1/TOSC1) PB6 (PCINT7/XTAL2/TOSC2) PB7 (PCINT21/OC0B/T1) PD5 (PCINT22/OC0A/AIN0) PD6 (PCINT23/AIN1) PD7 (PCINT0/CLKO/ICP1) PB0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 PC5 (ADC5/SCL/PCINT13) PC4 (ADC4/SDA/PCINT12) PC3 (ADC3/PCINT11) PC2 (ADC2/PCINT10) PC1 (ADC1/PCINT9) PC0 (ADC0/PCINT8) GND AREF AVCC PB5 (SCK/PCINT5) PB4 (MISO/PCINT4) PB3 (MOSI/OC2A/PCINT3) PB2 (SS/OC1B/PCINT2) PB1 (OC1A/PCINT1) TQFP Top View PD2 (INT0/PCINT18) PD1 (TXD/PCINT17) PD0 (RXD/PCINT16) PC6 (RESET/PCINT14) PC5 (ADC5/SCL/PCINT13) PC4 (ADC4/SDA/PCINT12) PC3 (ADC3/PCINT11) PC2 (ADC2/PCINT10) MLF Top View PD2 (INT0/PCINT18) PD1 (TXD/PCINT17) PD0 (RXD/PCINT16) PC6 (RESET/PCINT14) PC5 (ADC5/SCL/PCINT13) PC4 (ADC4/SDA/PCINT12) PC3 (ADC3/PCINT11) PC2 (ADC2/PCINT10) 32 31 30 29 28 27 26 25 32 31 30 29 28 27 26 25 (PCINT19/OC2B/INT1) PD3 (PCINT20/XCK/T0) PD4 GND VCC GND VCC (PCINT6/XTAL1/TOSC1) PB6 (PCINT7/XTAL2/TOSC2) PB7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 24 23 22 21 20 19 18 17 PC1 (ADC1/PCINT9) PC0 (ADC0/PCINT8) ADC7 GND AREF ADC6 AVCC PB5 (SCK/PCINT5) (PCINT19/OC2B/INT1) PD3 (PCINT20/XCK/T0) PD4 GND VCC GND VCC (PCINT6/XTAL1/TOSC1) PB6 (PCINT7/XTAL2/TOSC2) PB7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 24 23 22 21 20 19 18 17 PC1 (ADC1/PCINT9) PC0 (ADC0/PCINT8) ADC7 GND AREF ADC6 AVCC PB5 (SCK/PCINT5) (PCINT21/OC0B/T1) PD5 (PCINT22/OC0A/AIN0) PD6 (PCINT23/AIN1) PD7 (PCINT0/CLKO/ICP1) PB0 (PCINT1/OC1A) PB1 (PCINT2/SS/OC1B) PB2 (PCINT3/OC2A/MOSI) PB3 (PCINT4/MISO) PB4 NOTE: Bottom pad should be soldered to ground. 2 ATmega48/88/168 2545A-AVR-09/03 (PCINT21/OC0B/T1) PD5 (PCINT22/OC0A/AIN0) PD6 (PCINT23/AIN1) PD7 (PCINT0/CLKO/ICP1) PB0 (PCINT1/OC1A) PB1 (PCINT2/SS/OC1B) PB2 (PCINT3/OC2A/MOSI) PB3 (PCINT4/MISO) PB4 ATmega48/88/168 ATmega48/88/168 AVRRISC 8 CMOS ATmega48/88/168 1 MIPS/MHz Figure 2. GND VCC Watchdog Timer Watchdog Oscillator Power Supervision POR / BOD & RESET debugWIRE PROGRAM LOGIC Oscillator Circuits / Clock Generation Flash SRAM CPU EEPROM AVCC AREF GND 8bit T/C 0 16bit T/C 1 A/D Conv. 2 DATABUS 8bit T/C 2 Analog Comp. Internal Bandgap 6 USART 0 SPI TWI PORT D (8) PORT B (8) PORT C (7) RESET XTAL[1..2] PD[0..7] PB[0..7] PC[0..6] ADC[6..7] 3 2545A-AVR-09/03 AVR 32 (ALU) CISC 10 ATmega48/88/168: 4K/8K/16KFlash( RWW) 256/512/512 EEPROM 512/1K/1K SRAM 23 I/O 32 / (T/C), / USART SPI 6 10 ADC (TQFP MLF 8 10 ADC) CPU SRAM T/C USART SPI ADC CPU I/O ADC ADC Standby ATmega48/88/168 Atmel ISP Flash SPI Flash Flash FLASH RWW 8 RISC CPU Flash ATmega48/88/168 ATmega48/88/168 AVR C / ATmega48,ATmega88, ATmega168 ATmega48ATmega88 ATmega168 boot loader Table1 Table 1. ATmega48 ATmega88 ATmega168 Flash 4K 8K 16K EEPROM 256 512 512 RAM 512 1K 1K (16 ) (16 ) (32 ) ATmega88 ATmega168 Boot Loader SPM FLASH ATmega48 Boot Loader SPM Flash VCC GND B (PB7..0) XTAL1/ XTAL2/TOSC1/TOSC2 AVR B 8 I/O B 4 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 PB6 PB7 RC ASSR AS2 PB7..6 / 2 TOSC2..1 B P66" B " P23" " C (PC5..0) C 7 I/O C RSTDISBL PC6I/O PC6C RSTDISBLPC6Reset P37Table20 C P69" C " D (PD7..0) D 8 I/O D D P72" D " AVCC AVCC A/D PC3..0 PC7..6 ADC AVCC VCC ADC VCC PC6..4 VCC AREF ADC TQFP MLF ADC7..6 10 A/D AVCC C C PC6/RESET AREF ADC7..6 (TQFP MLF ) 5 2545A-AVR-09/03 AVR CPU AVR CPU Figure 3. AVR Data Bus 8-bit Flash Program Memory Program Counter Status and Control Instruction Register 32 x 8 General Purpose Registrers Interrupt Unit SPI Unit Watchdog Timer Indirect Addressing Instruction Decoder Direct Addressing ALU Control Lines Analog Comparator I/O Module1 Data SRAM I/O Module 2 I/O Module n EEPROM I/O Lines AVR Harvard CPU ( ) FLASH 32 8 ALU ALU 6 3 16 16 X Y Z 6 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ALU ALU / 16 16 32 / SPM (PC) SRAM SRAM SP I/O SRAM 5 AVR AVR I/O I/O 64 CPU SPI I/O 0x20 - 0x5F ATmega48/88/168 SRAM 0x60 - 0xFF I/O ST/STS/STD LD/LDS/LDD ALU-- AVR ALU 32 ALU ALU 3 / " " 7 2545A-AVR-09/03 ALU AVR SREG / 7 I R/W 0 6 T R/W 0 5 H R/W 0 4 S R/W 0 3 V R/W 0 2 N R/W 0 1 Z R/W 0 0 C R/W 0 SREG * 7 - I: I I RETI I SEI CLI * 6 - T: BLD BST T BST T BLD T * 5 - H: H BCD " " * 4 - S: S = N V S N 2 V * 3 - V: 2 2 * 2 - N: * 1 - Z: * 0 - C: AVR RISC / * * * * 8 8 8 8 8 16 16 16 Figure 4 CPU 32 8 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 4. AVR CPU 7 R0 R1 R2 ... R13 R14 R15 R16 R17 ... R26 R27 R28 R29 R30 R31 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F X X Y Y Z Z 0x0D 0x0E 0x0F 0x10 0x11 0 Addr. 0x00 0x01 0x02 Figure 4 32 SRAM X Y Z 9 2545A-AVR-09/03 XYZ R26..R31 Figure 5 Figure 5. X Y Z 15 X 7 R27 (0x1B) XH 0 7 R26 (0x1A) XL 0 0 15 Y 7 R29 (0x1D) 15 Z 7 R31 (0x1F) YH 0 7 R28 (0x1C) ZH 0 7 R30 (0x1E) YL 0 0 ZL 0 0 / AVR SRAM 0xFF PUSH POP RET RETI AVRI/O8 AVR SPL SPH 15 SP15 SP7 7 / R/W R/W 0 0 14 SP14 SP6 6 R/W R/W 0 0 13 SP13 SP5 5 R/W R/W 0 0 12 SP12 SP4 4 R/W R/W 0 0 11 SP11 SP3 3 R/W R/W 0 0 10 SP10 SP2 2 R/W R/W 0 0 9 SP9 SP1 1 R/W R/W 0 0 8 SP8 SP0 0 R/W R/W 0 0 SPH SPL 10 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 AVR CPU clkCPU Figure 6 Harvard 1 MIPS/MHz / / Figure 6. T1 T2 T3 T4 clkCPU 1st Instruction Fetch 1st Instruction Execute 2nd Instruction Fetch 2nd Instruction Execute 3rd Instruction Fetch 3rd Instruction Execute 4th Instruction Fetch Figure7 ALU Figure 7. ALU T1 T2 T3 T4 clkCPU Total Execution Time Register Operands Fetch ALU Operation Execute Result Write Back AVR I PC (Boot) BLB02 BLB12 P255" " P48" " RESET INT0 - 0 MCU MCUCR IVSEL ( P48" " ), Flash BOOTRSTFlash P241"Boot Loader RWW ATmega88 ATmega168" I I RETI I 11 2545A-AVR-09/03 "1" "0" I AVR CLI CLI CLI EEPROM EEPROM in cli r16, SREG ; ; EEPROM ; SREG (I ) ; SREG sbi EECR, EEMPE sbi EECR, EEPE out SREG, r16 C char cSREG; cSREG = SREG; /* */ _CLI(); EECR |= (1< ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SEI sei ; sleep ; ; : MCU ; C _SEI(); /* */ _SLEEP(); /* */ /* : MCU */ AVR 4 4 4 PC 3 MCU MCU 4 4 PC( ) SREG I 13 2545A-AVR-09/03 ATmega48/88/168 ATmega48/88/168 AVR ATmega48/88/168 EEPROM Flash ATmega48/88/168 4/8/16K Flash AVR 16 32 Flash 2/4/8K x 16. ATmega88 ATmega168 Flash (Boot) ATmega48 SPM Flash P236" (SPM) - SPMCSR" P244 SPMEN Flash 10,000 ATmega48/88/168 (PC) 11/12/13 2/4/8K P234"FlashATmega48" P241"Boot LoaderRWW ATmega88 ATmega168" P255"" SPIJTAGFlash ( LPM ) P11" " Figure 8. ATmega48 Program Memory 0x0000 Application Flash Section 0x7FF 14 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 9. ATmega88 ATmega168 Program Memory 0x0000 Application Flash Section Boot Flash Section 0x0FFF/0x1FFF SRAM Figure10 ATmega48/88/168 SRAM ATmega48/88/168 64 I/O( IN/OUT ) I/O 0x60 - 0xFF ST/STS/STD LD/LDS/LDD 768/1280/1280 I/O I/O SRAM 32 64 I/O 160 I/O 512/1024/1024 SRAM 5 R26 R31 Y Z 63 X Y Z ATmega48/88/168 32 64 I/O 160 I/O 512/1024/1024 SRAM P8" " 15 2545A-AVR-09/03 Figure 10. Data Memory 32 Registers 64 I/O Registers 160 Ext I/O Reg. Internal SRAM (512/1024/1024 x 8) 0x02FF/0x04FF/0x04FF Figure11 SRAM clkCPU Figure 11. SRAM T1 T2 T3 0x0000 - 0x001F 0x0020 - 0x005F 0x0060 - 0x00FF 0x0100 clkCPU Address Data WR Data RD Compute Address Address valid Memory Access Instruction Next Instruction EEPROM ATmega48/88/168 256/512/512 EEPROM EEPROM 100,000 EEPROM SPI EEPROM P255" " EEPROM / EEPROM I/O EEPROM Table3 EEPROM / VCC / CPU P21" EEPROM " EEPROM EEPROM EEPROM EEPROM EEPROM CPU 4 EEPROM CPU 2 16 ATmega48/88/168 2545A-AVR-09/03 Read Write ATmega48/88/168 EEPROM --EEARH EEARL 15 - EEAR7 7 / R R/W 0 X 14 - EEAR6 6 R R/W 0 X 13 - EEAR5 5 R R/W 0 X 12 - EEAR4 4 R R/W 0 X 11 - EEAR3 3 R R/W 0 X 10 - EEAR2 2 R R/W 0 X 9 - EEAR1 1 R R/W 0 X 8 EEAR8 EEAR0 0 R/W R/W X X EEARH EEARL * 15..9 - Res: * 8..0 - EEAR8..0: EEPROM EEPROM - EEARH EEARL 256/512/512 EEPROM EEPROM 0 255/511/511 EEAR EEPROM EEAR8 ATmega48 "0" EEPROM --EEDR / 7 MSB R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 6 5 4 3 2 1 0 LSB R/W 0 EEDR * 7..0 - EEDR7..0: EEPROM EEPROM EEDR EEAR EEDR EEAR EEPROM --EECR / 7 - R 0 6 - R 0 5 EEPM1 R/W X 4 EEPM0 R/W X 3 EERIE R/W 0 2 EEMPE R/W 0 1 EEPE R/W X 0 EERE R/W 0 EECR * 7..4 - Res: * 5, 4 - EEPM1 EEPM0: EEPROM EEPROM EEPE EEPROM ( ) Table2 EEPE EEPMn EEPROM EEPMn 0b00 17 2545A-AVR-09/03 Table 2. EEPROM EEPM1 0 0 1 1 EEPM0 0 1 0 1 3.4 ms 1.8 ms 1.8 ms - ( ) * 3 - EERIE: EEPROM SREG I "1" EERIE EEPROM EERIE EEWE EEPROM * 2 - EEMWE: EEPROM EEMWEEEWE"1"EEPROM EEMWE"1" 4 EEWE EEPROM EEMWE "0" EEWE EEMWE 4 EEPROM EEPE * 1 - EEPE: EEPROM EEPE EEPROM EEPROM EEPE EEPROM EEMPE EEPROM ( 3 4 ) 1. EEPE "0" 2. SPMCSR SPMEN 3. EEPROM EEAR ( ) 4. EEPROM EEDR ( ) 5. EECR EEMPE "1" EEPE 6. EEMPE 4 EEPE CPU Flash EEPROM EEPROM Flash CPU Flash CPU Flash P241"Boot Loader RWW ATmega88 ATmega168" : 5 6 EEPROM EEPROM EEPROM EEAR EEDR EEPROM I EEPE EEPE CPU * 0 - EERE: EEPROM EERE EEPROM EEPROM EERE EEAR EEPROM EEPROM CPU 4 EEPROM EEPE EEPROM EEAR 18 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 EEPROM Table3 CPU EEPROM Table 3. EEPROM CPU EEPROM RC 26,368 3.3 ms C EEPROM EEPROM SPM EEPROM_write: ; sbic EECR,EEWE rjmp EEPROM_write ; (r18:r17) out out out sbi sbi ret EEARH, r18 EEARL, r17 EEDR,r16 EECR,EEMWE EECR,EEWE ; (r16) ; EEMWE ; EEWE C void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { /* */ while(EECR & (1< 2545A-AVR-09/03 C EEPROM EEPROM_read: ; sbic EECR,EEWE rjmp EEPROM_read ; (r18:r17) out out sbi in ret EEARH, r18 EEARL, r17 EECR,EERE r16,EEDR ; EERE ; C unsigned char EEPROM_read(unsigned int uiAddress) { /* */ while(EECR & (1< CPU EEPROM EEPROM ( ) EEPROM EEPROM EEPROM CPU EEPROM AVR RESET BOD BOD I/O ATmega48/88/168 I/O P311" " ATmega48/88/168 I/O I/O I/O LD/LDS/LDDST/STS/STD 32I/O 0x00 - 0x1F I/O SBI CBI SBIS SBIC IN OUT 0x00 - 0x3F SRAM LD ST I/O 0x20 ATmega48/88/168 64 I/O( IN/OUT ) I/O 0x60 - 0xFF ST/STS/STD LD/LDS/LDD 20 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 "0" I/O "1" CBI SBI I/O "1" CBI SBI 0x00 to 0x1F I/O I/O ATmega48/88/1683I/O 0x00 - 0x1F I/O SBI CBI SBIS SBIC / 7 MSB R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 6 5 4 3 2 1 0 LSB R/W 0 GPIOR2 I/O 2--GPIOR2 I/O 1--GPIOR1 / 7 MSB R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 LSB R/W 0 GPIOR1 I/O 0--GPIOR0 / 7 MSB R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 LSB R/W 0 GPIOR0 21 2545A-AVR-09/03 Figure12 AVR P32" " Figure 12. Asynchronous Timer/Counter General I/O Modules ADC CPU Core RAM Flash and EEPROM clkADC clkI/O clkASY clkCPU clkFLASH AVR Clock Control Unit System Clock Prescaler Reset Logic Watchdog Timer Source clock Clock Multiplexer Watchdog clock Watchdog Oscillator Timer/Counter Oscillator External Clock Crystal Oscillator Low-frequency Crystal Oscillator Calibrated RC Oscillator CPU --clkCPU I/O --clkI/O CPUAVR CPU I/O I/O / SPI USART I/O I/O USI clkI/O Flash Flash CPU / 32 kHz / ADC ADCCPUI/O ADC Flash --clkFLASH --clkASY ADC --clkADC 22 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Flash AVR Table 4. (1) 128 kHz RC RC Note: 1. "1" "0" CKSEL3..0 1111 - 1000 0111 - 0110 0101 - 0100 0011 0010 0000 0001 RC 8.0MHz CKDIV8 1.0MHz (CKSEL = "0010" SUT = "10" CKDIV8 = "0") Vcc Vcc (tTOUT) P37"" (tTOUT) SUTx CKSELx Table5 P283"ATmega48/88/168 - " Table 5. (VCC = 5.0V) 0 ms 4.1 ms 65 ms (VCC = 3.0V) 0 ms 4.3 ms 69 ms 0 4K (4,096) 8K (8,192) Vcc AVR MCU Vcc / BOD BOD Vcc BOD BOD 6 32K CPU Vcc 23 2545A-AVR-09/03 XTAL1 XTAL2 Figure13 XTAL2 P26" " C1 C2 Table6 Figure 13. C2 C1 XTAL2 XTAL1 GND CKSEL3..1 Table6 Table 6. (3) (1) (MHz) 0.4 - 0.9 0.9 - 3.0 3.0 - 8.0 8.0 - 16.0 Notes: CKSEL3..1 100(2) 101 110 111 C1 C2 (pF) - 12 - 22 12 - 22 12 - 22 1. 2. 3. 8 MHz (VCC )CKDIV8 8 Table7 CKSEL0 SUT1..0 24 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 7. 258 CK 258 CK 1K CK 1K CK 1K CK 16K CK 16K CK 16K CK (VCC = 5.0V) 14CK + 4.1 ms (1) / BOD BOD Notes: CKSEL0 0 0 0 0 1 1 1 1 SUT1..0 00 01 10 11 00 01 10 11 14CK + 65 ms(1) 14CK(2) 14CK + 4.1 ms(2) 14CK + 65 ms(2) 14CK 14CK + 4.1 ms 14CK + 65 ms 1. 2. XTAL1 XTAL2 Figure13 XTAL2 P25" " Vcc = 2.7 - 5.5V C1 C2 Table9 CKSEL3..1 Table8 Table 8. (2) (1) (MHz) 0.4 - 25 Notes: CKSEL3..1 111 C1 C2 (pF) 12 - 22 1. 2. 8 MHz (VCC )CKDIV8 8 25 2545A-AVR-09/03 Figure 14. C2 C1 XTAL2 XTAL1 GND Table 9. 258 CK 258 CK 1K CK 1K CK 1K CK 16K CK 16K CK 16K CK (VCC = 5.0V) 14CK + 4.1 ms (1) / BOD BOD Notes: CKSEL0 0 0 0 0 1 SUT1..0 00 01 10 11 00 01 10 11 14CK + 65 ms(1) 14CK(2) 14CK + 4.1 ms(2) 14CK + 65 ms(2) 14CK 14CK + 4.1 ms 14CK + 65 ms 1 1 1 1. 2. 26 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 32.768 kHz Figure13 Table10 SUT CKSEL0 Table 10. 1K CK 1K CK 1K CK BOD 32K CK 32K CK 32K CK Note: 14CK 14CK + 4.1 ms 14CK + 65 ms (VCC = 5.0V) 14CK (1) BOD CKSEL0 0 0 0 0 1 1 1 1 SUT1..0 00 01 10 11 00 01 10 11 14CK + 4.1 ms(1) 14CK + 65 ms (1) 1. RC RC 8.0 MHz , 3V25C CKDIV8 P31" " Table11 CKSEL OSCCAL RC 3V25C 1% OSCCAL 7.3 - 8.1 MHz 1% P259" " Table 11. RC (1)(3) (2) (MHz) 7.3 - 8.1 Notes: CKSEL3..0 0010 1. 2. 3. 8 MHz (VCC )CKDIV8 8 SUT P28Table12 27 2545A-AVR-09/03 Table 12. RC BOD 6 CK 6 CK 6 CK Note: (VCC = 5.0V) 14CK (1) SUT1..0 00 01 10 11 14CK + 4.1 ms 14CK + 65 ms(2) 1. RSTDISBL 14CK + 4.1 ms 2. --OSCCAL / 7 CAL7 R/W 6 CAL6 R/W 5 CAL5 R/W 4 CAL4 R/W 3 CAL3 R/W 2 CAL2 R/W 1 CAL1 R/W 0 CAL0 R/W OSCCAL * 7..0 - CAL7..0: 25C 8.0 MHz 7.3 - 8.1 MHz 1% EEPROM Flash EEPROM Flash 8.8 MHz EEPROM Flash CAL7 0 1 OSCCAL = 0x7F OSCCAL = 0x80 CAL6..0 0x00 0x7F 7.3 - 8.1 MHz CAL6..0 1 2% 128 kHz 128 kHz 3V 25C128 kHz CKSEL "11" Table13 Table 13. 128 kHz 128 kHz Note: 1. CKSEL3..0 0011 28 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SUT Table14 Table 14. 128 kHz BOD 6 CK 6 CK 6 CK Note: 14CK (1) SUT1..0 00 01 10 11 14CK + 4 ms 14CK + 64 ms 1. RSTDISBL 14CK + 4.1 ms Figure15 CKSEL Table15 Table 15. (2) (1) (MHz) 0 - 100 Notes: CKSEL3..0 0000 C1 C2 (pF) 12 - 22 1. 2. 8 MHz (VCC )CKDIV8 8 Figure 15. NC XTAL2 EXTERNAL CLOCK SIGNAL XTAL1 GND SUT Table16 Table 16. BOD 6 CK 6 CK 6 CK (VCC = 5.0V) 14CK 14CK + 4.1 ms 14CK + 65 ms SUT1..0 00 01 10 11 MCU 2% MCU 29 2545A-AVR-09/03 P31" " CKOUT CLKO CKOUT I/O CLKO RC 32.768 kHz / 2 / TOSC1/TOSC2 XTAL1 /XTAL2 RC / P24Figure 13 ASSR EXTCLK "1" TOSC1 32 kHz P139" / " / ATmega48/88/168 CLKPR CPU clkI/O clkADC clkCPU clkFLASH Table17 / 7 CLKPCE --CLKPR 6 - 5 - 4 - 3 CLKPS3 2 CLKPS2 1 CLKPS1 0 CLKPS0 CLKPR R/W 0 R 0 R 0 R 0 R/W R/W R/W R/W * 7 - CLKPCE: CLKPS CLKPCE "1" CLKPR "0" CLKPCE CLKPCE "1" 4 CLKPS 4 CLKPCE 4 CLKPCE CLKPCE * 3..0 - CLKPS3..0: 3 - 0 MCU Table17 CLKPS 1. (CLKPCE) CLKPR 2. 4 CLKPS CLKPCE CKDIV8 CLKPS CKDIV8 CLKPS "0000" CKDIV8 CLKPS"0011" 8 CKDIV8 CLKPS 30 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 CKDIV8 Table 17. CLKPS3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 CLKPS2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 CLKPS1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 CLKPS0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 2 4 8 16 32 64 128 256 31 2545A-AVR-09/03 MCU AVR 5 SMCR SE SLEEP ( ADC Standby ) SMCR SM2SM1 SM0 Table18 MCU 4 ( MCU ) MCU MCU SLEEP MCU SRAM MCU P22Figure 12 ATmega48/88/168 --SMCR / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 SM2 R/W 0 2 SM1 R/W 0 1 SM0 R/W 0 0 SE R/W 0 SMCR * 7..4 Res: ATmega48/88/168 "0" * 3 2 1 - SM2..0: 2 1 0 Table18 Table 18. SM2 0 0 0 0 1 1 1 1 Note: SM1 0 0 1 1 0 0 1 1 SM0 0 1 0 1 0 1 0 1 ADC Standby(1) 1. Standby * 0 - SE: MCU SLEEP SE SLEEP SE SE 32 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SM2..0 000 SLEEP MCU CPU SPIUSARTADC / clkCPU clkFLASH USART MCU MCU ACSR ACD ADC ADC SM2..0 001 SLEEP MCU CPU ADC / 2 ( ) clkI/O clkCPU clkFLASH ADC ADC AD ADC BOD / 2 SPM/EEPROM INT0 INT1 MCU ADC SM2..0 010 SLEEP MCU ( ) BOD INT0 INT1 MCU MCU P76" " MCU CKSEL P24"" SM2..0011 SLEEPMCU / 2 / / 2 MCU TIMSK2 SREG I / 2 / 2 / 2 / / 2 / 2 33 2545A-AVR-09/03 Standby SM2..0 110 SLEEP MCUStandby 6 Table 19. MCU INT1, INT0 Pin TWI SPM/ EEPROM 2 clkFLASH clkADC clkCPU clkASY ADC X X clkIO ADC Standby Notes: (1) X X X X X X X X(2) X(2) X X(3) X (3) X X X X X X X(2) X X X X X X X(3) X(3) X 1. 2. / 2 3. INT1 INT0 AVR ADC ADC P217" " ADC P214" " BOD BODLEVEL BOD P40" " BOD BOD ADC P43" " P44" " I/O clkI/O ADC clkADC BOD 34 ATmega48/88/168 2545A-AVR-09/03 I/O ATmega48/88/168 P63" " VCC/2 VCC/2 (DIDR1 DIDR0) P216" 1 - DIDR1" P231" 0 - DIDR0" DWEN 35 2545A-AVR-09/03 AVR I / O ATmega168 JMP ATmega48 ATmega88 RJMP Boot -- -- ( ATmega88/168) Figure16 Table20 I/O MCU SUT CKSEL P24" " ATmega48/88/168 4 * * * * VPOT MCU RESET MCU (BOD) VBOT MCU Figure 16. DATA BUS MCU Status Register (MCUSR) PORF BORF EXTRF WDRF Power-on Reset Circuit BODLEVEL [2..0] Brown-out Reset Circuit Pull-up Resistor SPIKE FILTER RSTDISBL Watchdog Oscillator Clock Generator CK Delay Counters TIMEOUT CKSEL[3:0] SUT[1:0] 36 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 20. (1) ( ) ( )(2) RESET RESET 1. 2. VPOT TBD TBD 0.1 TBD TBD TBD TBD 0.9 2.5 V V V s VPOT VRST tRST Notes: 37 2545A-AVR-09/03 (POR) Table20 VCC POR POR POR CC V VCC RESET Figure 17. MCU RESET VCC VCC VPOT RESET VRST TIME-OUT tTOUT INTERNAL RESET Figure 18. MCU RESET VCC VPOT RESET VRST TIME-OUT tTOUT INTERNAL RESET 38 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 RESET ( Table20) VRST( ) tTOUT MCU RSTDISBL P256Table120 Figure 19. CC ATmega48/88/168 BOD(Brown-out Detection) VCC BODLEVEL BOD VBOT+ = VBOT + VHYST/2 VBOT- = VBOT - VHYST/2 Table 21. BODLEVEL (1) BODLEVEL 2..0 111 110 101 100 011 010 001 000 Note: 1. VBOT VCC VCC = VBOT ATmega48V/88V/168V BODLEVEL = 110 BODLEVEL = 101 ATmega48/88/168 BODLEVEL = 101 BODLEVEL = 101 VBOT VBOT 1.8 2.7 4.3 V VBOT BOD Table 22. VHYST tBOD 50 mV ns 39 2545A-AVR-09/03 BOD VCC (VBOT- Figure20)BOD VCC (VBOT+ Figure20) tTOUT MCU VCC Table20 tBODBOD Figure 20. VCC VBOTVBOT+ RESET TIME-OUT tTOUT INTERNAL RESET 1 CK tTOUT P44 Figure 21. CC CK MCU --MCUSR MCU MCU / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 WDRF R/W 2 BORF R/W 1 EXTRF R/W 0 PORF R/W MCUSR * 7..4: Res: ATmega48/88/168 "0" * 3 - WDRF: "0" 40 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * 2 - BORF: "0" * 1 - EXTRF: "0" * 0 - PORF: "0" MCUSR 41 2545A-AVR-09/03 ATmega48/88/168 ADC Table23 1. BOD ( BODLEVEL [2..0] ) 2. (ACSR ACBG ) 3. ADC BOD ACBG ADC Table 23. (1) VBG tBG IBG Note: 1. TBD TBD TBD 1.0 1.1 40 10 1.2 70 TBD V s A 42 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 128 kHz P44Table26 WDR 10 ATmega48/88/168 P44Table26 WDTON 2 Table 24. P47"" Table 24. WDTON WDT WDTON 1 2 WDT WDT Figure 22. OSC/2K OSC/4K OSC/8K OSC/16K OSC/32K OSC/64K OSC/128K OSC/256K OSC/512K OSC/1024K 128kHz OSCILLATOR WATCHDOG RESET WDE WDP0 WDP1 WDP2 WDP3 MCU RESET WDIF INTERRUPT WDIE -- WDTCSR / 7 WDIF R/W 0 6 WDIE R/W 0 5 WDP3 R/W 0 4 WDCE R/W 0 3 WDE R/W X 2 WDP2 R/W 0 1 WDP1 R/W 0 0 WDP0 R/W 0 WDTCSR * 7 - WDIF: WDIF "1" WDIF SREG I WDIE MCU * 6 - WDIE: WDIE "1" WDE I 43 2545A-AVR-09/03 WDE WDIE WDIE WDIE Table 25. WDE 0 0 1 1 WDIE 0 1 0 1 * Bit 4 - WDCE: WDE WDCE 4 WDE WDCE P47" " * 3 - WDE: WDE"1" WDCE"1"WDE 1. WDCE WDE "1" WDE "1" 2. 4 WDE "0" 2 P47" " 1 WDE MCUSR WDRF P41"MCU - MCUSR" WDRF WDRF WDE WDE WDRF Note: BOD WDRF WDRF WDE * 5, 2..0 - WDP3..0: 3, 2, 1, 0 WDP3..0 Table26 Table 26. WDP3 0 0 0 0 0 0 0 WDP2 0 0 0 0 1 1 1 WDP1 0 0 1 1 0 0 1 WDP0 0 1 0 1 0 1 0 2K 4K 8K 16K 32K 64K 128K VCC = 5.0V 16 ms 32 ms 64 ms 0.125 s 0.25 s 0.5 s 1.0 s 44 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 26. WDP3 0 1 1 1 1 1 1 1 1 WDP2 1 0 0 0 0 1 1 1 1 WDP1 1 0 0 1 1 0 0 1 1 WDP0 1 0 1 0 1 0 1 0 1 256K 512K 1024K VCC = 5.0V 2.0 s 4.0 s 8.0 s C WDT ( ) (1) WDT_off: ; MCUSR WDRF ldi out ldi out ldi out ret r16, (0< ; WDT C (1) void WDT_off(void) { /*MCUSR WDRF */ MCUSR = 0x00 /* WDCE WDE */ WDTCSR = (1< 1. 45 2545A-AVR-09/03 1 WDE ( ) 1. WDCE WDE "1" WDE "1" 2. 4 WDE WDP WDCE "0" 2 WDE "1" 1. WDCEWDE"1" WDE "1" 2. 4 WDCE "0" WDP WDE 46 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ATmega48/88/168 AVR P11" " ATmega48 ATmega88 ATmega168 * * ATmega168 ATmega48 ATmega88 ATmega48 Boot Loader ATmega88 ATmega168 BOOTRST MCUCR IVSEL 47 2545A-AVR-09/03 ATmega48 Table 27. ATmega48 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 (2) 0x000 0x001 0x002 0x003 0x004 0x005 0x006 0x007 0x008 0x009 0x00A 0x00B 0x00C 0x00D 0x00E 0x00F 0x010 0x011 0x012 0x013 0x014 0x015 0x016 0x017 0x018 0x019 RESET INT0 INT1 PCINT0 PCINT1 PCINT2 WDT TIMER2 COMPA TIMER2 COMPB TIMER2 OVF TIMER1 CAPT TIMER1 COMPA TIMER1 COMPB TIMER1 OVF TIMER0 COMPA TIMER0 COMPB TIMER0 OVF SPI, STC USART, RX USART, UDRE USART, TX ADC EE READY ANALOG COMP TWI SPM READY 0 1 0 1 2 / 2 A / 2 B / 2 / 1 / 1 A / 1 B / 1 / 0 A / 0 B / 0 SPI USART, Rx USART USART, Tx ADC EEPROM 48 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ATmega48 0x000 0x001 0x002 0x003 0x004 0x005 0x006 0x007 0x008 0x009 0x00A 0x00B 0x00C 0x00D 0x00E 0x00F 0x010 0x011 0x012 0x013 0x014 0x015 0x016 0x017 0x018 0x019 ; 0x01A RESET: 0x01B 0x01C 0x01D 0x01E 0x01F ... ... ldi out ldi out sei 49 2545A-AVR-09/03 ATmega88 Table 28. ATmega88 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Notes: (2) 0x000(1) 0x001 0x002 0x003 0x004 0x005 0x006 0x007 0x008 0x009 0x00A 0x00B 0x00C 0x00D 0x00E 0x00F 0x010 0x011 0x012 0x013 0x014 0x015 0x016 0x017 0x018 0x019 RESET INT0 INT1 PCINT0 PCINT1 PCINT2 WDT TIMER2 COMPA TIMER2 COMPB TIMER2 OVF TIMER1 CAPT TIMER1 COMPA TIMER1 COMPB TIMER1 OVF TIMER0 COMPA TIMER0 COMPB TIMER0 OVF SPI, STC USART, RX USART, UDRE USART, TX ADC EE READY ANALOG COMP TWI SPM READY 0 1 0 1 2 / 2 A / 2 B / 2 / 1 / 1 A / 1 B / 1 / 0 A / 0 B / 0 SPI USART, Rx USART USART, Tx Complete ADC EEPROM 1. BOOTRST MCU Boot Loader P241"Boot Loader RWW ATmega88 ATmega168" 2. MCUCRIVSEL Boot Boot Table29 BOOTRST/IVSEL Boot 50 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 29. ATmega88(1) BOOTRST 1 1 0 0 Note: IVSEL 0 1 0 1 0x000 0x000 Boot Boot 0x001 Boot + 0x001 0x001 Boot + 0x001 1. Boot P252Table109 BOOTRST "0" "1" ; ; IRQ0 ; IRQ1 ; PCINT0 ; PCINT1 ; PCINT2 ; ; 2 A ; 2 B ; 2 ; 1 ; 1 A ; 1 B ; 1 ; 0 A ; 0 B ; 0 ; SPI ; USART RX ; USART UDR ; USART TX ; ADC ; EEPROM ; ; ; SPM ATmega88 0x000 0x001 0x002 0x003 0x004 0x005 0x006 0x007 0X008 0x009 0x00A 0x00B 0x00C 0x00D 0x00E 0x00F 0x010 0x011 0x012 0x013 0x014 0x015 0x016 0x017 0x018 0x019 ; 0x01A RESET: 0x01B 0x01C 0x01D 0x01E 0x01F ... ... ldi out ldi out sei r16, high(RAMEND); SPH,r16 r16, low(RAMEND) SPL,r16 ; xxx ... ; RAM 51 2545A-AVR-09/03 BOOTRST Boot 2K MCUCR IVSEL ATmega88 0x000 0x001 0x002 0x003 0x004 0x005 ; .org 0xC01 0xC01 0xC02 ... 0xC19 rjmp rjmp ... rjmp EXT_INT0 EXT_INT1 ... SPM_RDY ; IRQ0 ; IRQ1 ; ; SPM RESET: ldi out ldi out sei BOOTRST Boot 2K ATmega88 .org 0x001 0x001 0x002 ... 0x019 ; .org 0xC00 0xC00 RESET: ldi 0xC01 0xC02 0xC03 0xC04 0xC05 out ldi out sei 52 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 BOOTRST Boot 2K MCUCR IVSEL ATmega88 ; .org 0xC00 0xC00 0xC01 0xC02 ... 0xC19 ; 0xC1A 0xC1B 0xC1C 0xC1D 0xC1E 0xC1F RESET: ldi out ldi out sei ATmega168 Table 30. ATmega168 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 (2) 0x0000(1) 0x0002 0x0004 0x0006 0x0008 0x000A 0x000C 0x000E 0x0010 0x0012 0x0014 0x0016 0x0018 0x001A 0x001C 0x001E 0x0020 0x0022 0x0024 0x0026 0x0028 RESET INT0 INT1 PCINT0 PCINT1 PCINT2 WDT TIMER2 COMPA TIMER2 COMPB TIMER2 OVF TIMER1 CAPT TIMER1 COMPA TIMER1 COMPB TIMER1 OVF TIMER0 COMPA TIMER0 COMPB TIMER0 OVF SPI, STC USART, RX USART, UDRE USART, TX 0 1 0 1 2 / 2 A / 2 B / 2 / 1 / 1 A / 1 B / 1 / 0 A / 0 B / 0 SPI USART Rx USART USART Tx 53 2545A-AVR-09/03 Table 30. ATmega168 (Continued) 22 23 24 25 26 Notes: (2) 0x002A 0x002C 0x002E 0x0030 0x0032 ADC EE READY ANALOG COMP TWI SPM READY ADC EEPROM SPM 1. BOOTRST MCU Boot Loader P241"Boot Loader RWW ATmega88 ATmega168" 2. MCUCRIVSEL Boot Boot Table31 BOOTRST/IVSEL Boot Table 31. ATmega168(1) BOOTRST 1 1 0 0 Note: IVSEL 0 1 0 1 0x000 0x000 Boot Boot 0x001 Boot + 0x0002 0x001 Boot + 0x0002 1. Boot P252Table109 BOOTRST "0" "1" jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp jmp ; ; IRQ0 ; IRQ1 ; PCINT0 ; PCINT1 ; PCINT2 ; ; 2 A ; 2 B ; 2 ; 1 ; 1 A ; 1 B ; 1 ; 0 A ; 0 B ; 0 ; SPI ; USART RX ATmega168 0x0000 0x0002 0x0004 0x0006 0x0008 0x000A 0x000C 0x000E 0x0010 0x0012 0x0014 0x0016 0x0018 0x001A 0x001C 0x001E 0x0020 0x0022 0x0024 RESET EXT_INT0 EXT_INT1 PCINT0 PCINT1 PCINT2 WDT TIM2_COMPA TIM2_COMPB TIM2_OVF TIM1_CAPT TIM1_COMPA TIM1_COMPB TIM1_OVF TIM0_COMPA TIM0_COMPB TIM0_OVF SPI_STC USART_RXC 54 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 0x0026 0x0028 0x002A 0x002C 0x002E 0x0030 0x0032 ; 0x0033RESET: 0x0034 0x0035 0x0036 0x0037 0x0038 ... ... ldi out ldi out sei BOOTRST Boot 2K MCUCR IVSEL ATmega168 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 ; .org 0xC02 0x1C02 0x1C04 ... 0x1C32 jmp jmp ... jmp EXT_INT0 EXT_INT1 ... SPM_RDY ; IRQ0 ; IRQ1 ; ; SPM RESET: ldi out ldi out sei 55 2545A-AVR-09/03 BOOTRST Boot 2K ATmega168 .org 0x0002 0x0002 0x0004 ... 0x0032 ; .org 0x1C00 0x1C00 RESET: ldi 0x1C01 0x1C02 0x1C03 0x1C04 0x1C05 out ldi out sei ATmega168 BOOTRST Boot2K MCUCRIVSEL ATmega168 ; .org 0x1C00 0x1C00 0x1C02 0x1C04 ... 0x1C32 ; 0x1C33 0x1C34 0x1C35 0x1C36 0x1C37 0x1C38 RESET: ldi out ldi out sei Boot ATmega88 ATmega168 MCU --MCUCR / 7 JTD R/W 0 6 - R 0 5 - R 0 4 PUD R/W 0 3 - R 0 2 - R 0 1 IVSEL R/W 0 0 IVCE R/W 0 MCUCR * Bit 1 - IVSEL: IVSEL"0" FlashIVSEL"1" Boot Boot BOOTSZ P241"Boot Loader RWW ATmega88 ATmega168" IVSEL 1. IVCE 2. 4 IVSEL IVCE "0" 56 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 IVCE IVSEL IVSEL IVCE 4 I Note: Boot Loader BootBLB02 Boot BLB12 Boot Loader Boot P241"Boot Loader RWW ATmega88 ATmega168" ATmega48 * 0 - IVCE: IVSEL IVCE IVCE 4 IVSEL IVCE IVCE Move_interrupts: ; ldi out ldi out ret r16, (1< C void Move_interrupts(void) { /* */ MCUCR = (1< 57 2545A-AVR-09/03 I/O I/O AVR I/O - - SBI CBI ( / ) ( / ) LED VCC Figure23 P275" " Figure 23. I/O Rpu Pxn Logic Cpin See Figure "General Digital I/O" for Details : "x" "n" PORTB3 B 3 PORTxn I/O P75"I/O " I/O : - PORTx - DDRx - PINx / PINx "1" "0" "1" MCUCR PUD I/O P59" I/O " P64" " I/O I/O I/O Figure24 Pxn I/O 58 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 24. I/O(1) PUD Q D DDxn Q CLR RESET WDx RDx 1 Pxn Q D PORTxn Q CLR 0 RESET SLEEP RRx WRx WPx SYNCHRONIZER D Q D Q RPx PINxn L Q Q clk I/O PUD: SLEEP: clkI/O: PULLUP DISABLE SLEEP CONTROL I/O CLOCK WDx: RDx: WRx: RRx: RPx: WPx: WRITE DDRx READ DDRx WRITE PORTx READ PORTx REGISTER READ PORTx PIN WRITE PINx REGISTER Note: 1. WRx, WPx, WDx, RRx, RPx RDx clkI/O, SLEEP PUD DDxn PORTxn PINxn P75"I/O " DDxn DDRx PORTxn PORTx PINxn PINx DDxn DDxn "1" Pxn PORTxn "1" PORTxn PORTxn "1" ("1") ("0") DDRxn PINxn "1" PORTxn "0" "1" SBI ( ) ({DDxn, PORTxn} = 0b00) ({DDxn, PORTxn} = 0b11) ({DDxn, PORTxn} = 0b01) ({DDxn, PORTxn} = 0b10) MCUCR PUD ({DDxn, PORTxn} = 0b00) ({DDxn, PORTxn} = 0b10) DATA BUS 59 2545A-AVR-09/03 Table32 Table 32. DDxn 0 0 0 1 1 PORTxn 0 1 1 0 1 PUD( MCUCR) X 0 1 X X I/O No Yes No No No (Hi-Z) (Hi-Z) ( ) ( ) DDxn PINxn Figure24 PINxn Figure25 tpd,max tpd,min Figure 25. SYSTEM CLK INSTRUCTIONS SYNC LATCH PINxn r17 0x00 t pd, max t pd, min 0xFF XXX XXX in r17, PINx 60 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SYNC LATCH PINxn tpd,max tpd,min 1/2 11/2 Figure26 out in nop out SYNC LATCH tpd Figure 26. SYSTEM CLK r16 INSTRUCTIONS SYNC LATCH PINxn r17 0x00 t pd 0xFF out PORTx, r16 nop 0xFF in r17, PINx 61 2545A-AVR-09/03 B 0 1 2 3 4 7 6 7 nop (1) ... ; ; ldi ldi out out nop ; in ... r16,PINB r16,(1< C unsigned char i; ... /* */ /* */ PORTB = (1< 1. 0 6 7 1 2 3 0 1 Figure24 ( ) SLEEP MCU Standby VCC/2 SLEEP SLEEP SLEEP P64" " ("1") " " "1" "0" "0" "1" ( ) 62 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 VCC GND I/O Figure27 Figure24 AVR Figure 27. (1) PUOExn PUOVxn 1 0 PUD DDOExn DDOVxn 1 0 QD DDxn Q CLR PVOExn PVOVxn WDx RESET RDx 1 Pxn 0 Q D 1 0 PORTxn PTOExn WPx WRx RRx DIEOExn DIEOVxn 1 0 Q CLR RESET SLEEP SYNCHRONIZER D SET RPx Q D Q PINxn L CLR Q CLR Q clk I/O DIxn AIOxn PUOExn: PUOVxn: DDOExn: DDOVxn: PVOExn: PVOVxn: DIEOExn: DIEOVxn: SLEEP: PTOExn: Pxn PULL-UP OVERRIDE ENABLE Pxn PULL-UP OVERRIDE VALUE Pxn DATA DIRECTION OVERRIDE ENABLE Pxn DATA DIRECTION OVERRIDE VALUE Pxn PORT VALUE OVERRIDE ENABLE Pxn PORT VALUE OVERRIDE VALUE Pxn DIGITAL INPUT-ENABLE OVERRIDE ENABLE Pxn DIGITAL INPUT-ENABLE OVERRIDE VALUE SLEEP CONTROL Pxn, PORT TOGGLE OVERRIDE ENABLE PUD: WDx: RDx: RRx: WRx: RPx: WPx: clkI/O: DIxn: AIOxn: PULLUP DISABLE WRITE DDRx READ DDRx READ PORTx REGISTER WRITE PORTx READ PORTx PIN WRITE PINx I/O CLOCK DIGITAL INPUT PIN n ON PORTx ANALOG INPUT/OUTPUT PIN n ON PORTx Note: 1. WPx, WDx, RLx, RPxRDx I/O, SLEEP clk PUD DATA BUS 63 2545A-AVR-09/03 Table33 Figure27 Table 33. PUOE PUOV {DDxn, PORTxn, PUD} = 0b010 PUOE PUOV / / DDxnPORTxn PUD DDOV DDxn DDOE DDOV / / DDxn PVOV PVOE PORTxn PVOE PVOV PORTxn PTOE DIEOV DIEOE MCU ( ) DIEOE DIEOV / / MCU ( ) / PUOV DDOE DDOV PVOE PVOV PTOE DIEOE DIEOV DI AIO / 64 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 MCU --MCUCR / 7 JTD R/W 0 6 - R 0 5 - R 0 4 PUD R/W 0 3 - R 0 2 - R 0 1 IVSEL R/W 0 0 IVCE R/W 0 MCUCR * 4 - PUD: PUD DDxn PORTxn ({DDxn, PORTxn} = 0b01) I/O P60" " B B Table34. Table 34. B PB7 XTAL2 ( 2) TOSC2 ( 2) PCINT7 ( 7) XTAL1 ( 1 ) TOSC1 ( 1) PCINT6 ( 6) SCK (SPI ) PCINT5 ( 5) MISO (SPI / ) PCINT4 ( 4) MOSI (SPI / ) OC2A ( / 2 A ) PCINT3 ( 3) SS (SPI ) OC1B ( / 1 B ) PCINT2 ( 2) OC1A ( / 1 A ) PCINT1 ( 1) ICP1 ( / 1 ) CLKO ( ) PCINT0 ( 0) PB6 PB5 PB4 PB3 PB2 PB1 PB0 * XTAL2/TOSC2/PCINT7 - B, 7 XTAL2 2 I/O TOSC2 2 RC ASSR AS2 ASSR AS2 EXCLK / 2 PB7 I/O PCINT7 7 PB7 PB7 DDB7 PORTB7 PINB7 0 65 2545A-AVR-09/03 * XTAL1/TOSC1/PCINT6 - B, 6 XTAL1 1 RC I/O TOSC1 1 RC ASSR AS2 ASSR AS2 / 2 PB6 I/O PCINT6 6 PB6 PB6 DDB6 PORTB6 PINB6 "0" * SCK/PCINT5 - B, 5 SCK SPI SPI DDB5 SPI DDB5 SPI PORTB5 PCINT5 5 PB5 * MISO/PCINT4 - B, 4 MISO SPI / SPI SPI DDB4 PB4 SPI DDB4 SPI PORTB4 PCINT4 4 PB4 * MOSI/OC2/PCINT3 - B, 3 MOSI SPI / SPI DDB3 PB3 SPI DDB3 SPI PORTB3 OC2PB3 / 2 PB3 (DDB3=1) PWM OC2 PWM PCINT3 3 PB3 * SS/OC1B/PCINT2 - B, 2 SS SPI DDB2 PB2 PB2 SPI SPI DDB2 SPI PORTB2 OC1B PB2 / 1 B PB2 (DDB2=1) PWM OC1B PWM PCINT2 2 PB2 * OC1A/PCINT1 - B, 1 OC1A PB1 / 1 A PB1 (DDB1=1) PWM OC1A PWM 66 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 PCINT1 1 PB1 * ICP1/CLKO/PCINT0 - B, 0 ICP1PB0 / 1 CLKO PB0 CKOUT PORTB0 DDB0 PCINT0 0 PB0 Table35 Table36 B P63Figure 27 SPI MSTR INPUT SPI SLAVE OUTPUT MISO MOSISPI MSTR OUTPUT SPI SLAVE INPUT Table 35. PB7..PB4 PUOE PUOV DDOE DDOV PVOE PVOV DIEOE PB7/XTAL2/ TOSC2/PCINT7(1) INTRC * EXTCK+ AS2 0 INTRC * EXTCK+ AS2 0 0 0 INTRC * EXTCK + AS2 + PCINT7 * PCIE0 (INTRC + EXTCK) * AS2 PCINT7INPUT Oscillator Output PB6/XTAL1/ TOSC1/PCINT6(1) INTRC + AS2 0 INTRC + AS2 0 0 0 INTRC + AS2 + PCINT6 * PCIE0 INTRC * AS2 PCINT6INPUT Oscillator/Clock Input PB5/SCK/ PCINT5 SPE * MSTR PORTB5 * PUD SPE * MSTR 0 SPE * MSTR SCK OUTPUT PCINT5 * PCIE0 PB4/MISO/ PCINT4 SPE * MSTR PORTB4 * PUD SPE * MSTR 0 SPE * MSTR SPI SLAVE OUTPUT PCINT4 * PCIE0 DIEOV DI AIO 1 PCINT5 INPUT SCK INPUT - 1 PCINT4 INPUT SPI MSTRINPUT - 67 2545A-AVR-09/03 Notes: 1. INTRCRC(CKSEL )EXTCK ( CKSEL ) Table 36. PB3..PB0 PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI PB3/MOSI/ OC2/PCINT3 SPE * MSTR PORTB3 * PUD SPE * MSTR 0 SPE * MSTR + OC2A ENABLE SPI MSTR OUTPUT + OC2A PCINT3 * PCIE0 1 PCINT3 INPUT SPI SLAVE INPUT - PB2/SS/ OC1B/PCINT2 SPE * MSTR PORTB2 * PUD SPE * MSTR 0 OC1B ENABLE OC1B PCINT2 * PCIE0 1 PCINT2 INPUT SPI SS - PB1/OC1A/ PCINT1 0 0 0 0 OC1AENABLE OC1A PCINT1 * PCIE0 1 PCINT1 INPUT PB0/ICP1/ PCINT0 0 0 0 0 0 0 PCINT0 * PCIE0 1 PCINT0 INPUT ICP1 INPUT - AIO - C C Table37 Table 37. C PC6 RESET ( ) PCINT14 ( 14) ADC5 (ADC 5) SCL ( ) PCINT13 ( 13) ADC4 (ADC 4) SDA ( / ) PCINT12 ( 12) ADC3 (ADC 3) PCINT11 ( 11) ADC2 (ADC 2) PCINT10 ( 10) ADC1 (ADC 1) PCINT9 ( 9) ADC0 (ADC 0) PCINT8 ( 8) PC5 PC4 PC3 PC2 PC1 PC0 68 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * RESET/PCINT14 - C, 6 RESET RSTDISBL I/O BOD RSTDISBL I/O PC6 DDC6 PORTC6 PINC6 0 PCINT14 14 PC6 * SCL/ADC5/PCINT13 - C, 5 SCL TWCR TWEN "1" TWI PC5 I/O TWI 50 ns PC5 ADC 5 ADC 5 PCINT13 13 PC5 * SDA/ADC4/PCINT12 - C, 4 SDA TWCR TWEN 1 TWI PC5I/O TWI 50 ns PC4 ADC 4 ADC 4 PCINT12 12 PC4 * ADC3/PCINT11 - C, 3 PC3 ADC 3 ADC 3 PCINT11 11 PC3 * ADC2/PCINT10 - C, 2 PC2 ADC 2 ADC 2 PCINT10 10 PC2 * ADC1/PCINT9 - C, 1 PC1 ADC 1 ADC 1 PCINT9 9 PC1 * ADC0/PCINT8 - C, 0 PC0 ADC 0 ADC 0 PCINT8 8 PC0 69 2545A-AVR-09/03 Table38 Table39 C P63Figure 27 Table 38. PC6..PC4(1) PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO Note: PC6/RESET/PCINT14 RSTDISBL 1 RSTDISBL 0 0 0 RSTDISBL + PCINT14 * PCIE1 RSTDISBL PCINT14 INPUT RESET INPUT PC5/SCL/ADC5/PCINT13 TWEN PORTC5 * PUD TWEN SCL_OUT TWEN 0 PCINT13 * PCIE1 + ADC5D PCINT13 * PCIE1 PCINT13 INPUT ADC5 INPUT / SCL INPUT PC4/SDA/ADC4/PCINT12 TWEN PORTC4 * PUD TWEN SDA_OUT TWEN 0 PCINT12 * PCIE1 + ADC4D PCINT12 * PCIE1 PCINT12 INPUT ADC4 INPUT / SDA INPUT 1. PC4 PC5 AIO TWI Table 39. PC3..PC0 PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO PC3/ADC3/ PCINT11 0 0 0 0 0 0 PCINT11 * PCIE1 + ADC3D PCINT11 * PCIE1 PCINT11 INPUT ADC3 INPUT PC2/ADC2/ PCINT10 0 0 0 0 0 0 PCINT10 * PCIE1 + ADC2D PCINT10 * PCIE1 PCINT10 INPUT ADC2 INPUT PC1/ADC1/ PCINT9 0 0 0 0 0 0 PCINT9 * PCIE1 + ADC1D PCINT9 * PCIE1 PCINT9 INPUT ADC1 INPUT PC0/ADC0/ PCINT8 0 0 0 0 0 0 PCINT8 * PCIE1 + ADC0D PCINT8 * PCIE1 PCINT8 INPUT ADC0 INPUT 70 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 D D Table40 Table 40. D PD7 AIN1 ( ) PCINT23 ( 23) AIN0 ( ) OC0A ( / 0 A ) PCINT22 ( 22) T1 ( / 1 ) OC0B ( / 0 B ) PCINT21 ( 21) XCK (USART / ) T0 ( / 0 ) PCINT20 ( 20) INT1 ( 1 ) OC2B ( / 2 B ) PCINT19 ( 19) INT0 ( 0 ) PCINT18 ( 18) TXD (USART ) PCINT17 ( 17) RXD (USART ) PCINT16 ( 16) PD6 PD5 PD4 PD3 PD2 PD1 PD0 * AIN1/OC2B/PCINT23 - D, 7 AIN1 PD7 PCINT23 23 PD7 * AIN0/OC0A/PCINT22 - D, 6 AIN0 PD6 OC0A PD6/0A PD6 (DDD6=1) PWM OC0A PWM PCINT22 22 PD6 * T1/OC0B/PCINT21 - D, 5 T1 / 1 OC0B PD5/0B PD5 (DDD5=1) PWM OC0B PWM PCINT21 21 PD5 71 2545A-AVR-09/03 * XCK/T0/PCINT20 - D, 4 XCK USART T0 / 0 PCINT20 20 PD4 * INT1/OC2B/PCINT19 - D, 3 INT1 1PD3 OC2B PD3/0B PD3 (DDD3=1) PWM OC2B PWM PCINT19 19 PD3 * INT0/PCINT18 - D, 2 INT0 0PD2 PCINT18 18 PD2 * TXD/PCINT17 - D, 1 TXD (USART ) USART DDD1 PCINT17 17 PD1 * RXD/PCINT16 - D, 0 RXD ( USART ) USART DDD0 PORTD0 PCINT16 16 PD0 Table41 Table42 D P63Figure 27 Table 41. PD7..PD4 PUOE PUO DDOE DDOV PVOE PVOV DIEOE DIEOV DI PD7/AIN1 /PCINT23 0 0 0 0 0 0 PCINT23 * PCIE2 1 PCINT23 INPUT PD6/AIN0/ OC0A/PCINT22 0 0 0 0 OC0A ENABLE OC0A PCINT22 * PCIE2 1 PCINT22 INPUT PD5/T1/OC0B/ PCINT21 0 0 0 0 OC0B ENABLE OC0B PCINT21 * PCIE2 1 PCINT21 INPUT T1 INPUT - PD4/XCK/ T0/PCINT20 0 0 0 0 UMSEL XCK OUTPUT PCINT20 * PCIE2 1 PCINT20 INPUT XCK INPUT T0 INPUT - AIO AIN1 INPUT AIN0 INPUT 72 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 42. PD3..PD0 PUOE PUO DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO PD3/OC2B/INT1/ PCINT19 0 0 0 0 OC2B ENABLE OC2B INT1 ENABLE + PCINT19 * PCIE2 1 PCINT19 INPUT INT1 INPUT - PD2/INT0/ PCINT18 0 0 0 0 0 0 INT0 ENABLE + PCINT18 * PCIE1 1 PCINT18 INPUT INT0 INPUT - PD1/TXD/ PCINT17 TXEN 0 TXEN 1 TXEN TXD PCINT17 * PCIE2 1 PCINT17 INPUT - PD0/RXD/ PCINT16 RXEN PORTD0 * PUD RXEN 0 0 0 PCINT16 * PCIE2 1 PCINT16 INPUT RXD - 73 2545A-AVR-09/03 I/O B --PORTB / 7 PORTB7 6 PORTB6 5 PORTB5 4 PORTB4 3 PORTB3 2 PORTB2 1 PORTB1 0 PORTB0 PORTB R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 B --DDRB / 7 DDB7 R/W 0 6 DDB6 R/W 0 5 DDB5 R/W 0 4 DDB4 R/W 0 3 DDB3 R/W 0 2 DDB2 R/W 0 1 DDB1 R/W 0 0 DDB0 R/W 0 DDRB B --PINB / 7 PINB7 R N/A 6 PINB6 R N/A 5 PINB5 R N/A 4 PINB4 R N/A 3 PINB3 R N/A 2 PINB2 R N/A 1 PINB1 R N/A 0 PINB0 R N/A PINB C --PORTC / 7 - 6 PORTC6 5 PORTC5 4 PORTC4 3 PORTC3 2 PORTC2 1 PORTC1 0 PORTC0 PORTC R 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 C --DDRC / 7 - R 0 6 DDC6 R/W 0 5 DDC5 R/W 0 4 DDC4 R/W 0 3 DDC3 R/W 0 2 DDC2 R/W 0 1 DDC1 R/W 0 0 DDC0 R/W 0 DDRC C --PINC / 7 - R 0 6 PINC6 R N/A 5 PINC5 R N/A 4 PINC4 R N/A 3 PINC3 R N/A 2 PINC2 R N/A 1 PINC1 R N/A 0 PINC0 R N/A PINC D --PORTD / 7 PORTD7 6 PORTD6 5 PORTD5 4 PORTD4 3 PORTD3 2 PORTD2 1 PORTD1 0 PORTD0 PORTD R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 D --DDRD / 7 DDD7 R/W 0 6 DDD6 R/W 0 5 DDD5 R/W 0 4 DDD4 R/W 0 3 DDD3 R/W 0 2 DDD2 R/W 0 1 DDD1 R/W 0 0 DDD0 R/W 0 DDRD D --PIND / 7 PIND7 R N/A 6 PIND6 R N/A 5 PIND5 R N/A 4 PIND4 R N/A 3 PIND3 R N/A 2 PIND2 R N/A 1 PIND1 R N/A 0 PIND0 R N/A PIND 74 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 INT0 INT1 PCINT23..0 INT0 INT1 PCINT23..0 PCINT23..16 PCI2 PCINT14..8 PCI1 PCINT7..0 PCI0PCMSK2PCMSK1 PCMSK0 PCINT23..0 INT0 INT1 A - EICRA INT0 INT1 INT0 INT1 I/O(P23"" ) INT0INT1 ( ) I/O MCU MCU MCU SUT CKSEL P23" " A--EICRA A / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 ISC11 R/W 0 2 ISC10 R/W 0 1 ISC01 R/W 0 0 ISC00 R/W 0 EICRA * 7..4 - Res: ATmega48/88/168 "0" * 3, 2 - ISC11, ISC10: 1 1 0 1 INT1 SREG I Table43 MCU INT1 75 2545A-AVR-09/03 Table 43. 1 ISC11 0 0 1 1 ISC10 0 1 0 1 INT1 INT1 INT1 INT1 * 1, 0 - ISC01, ISC00: 0 1 0 0 INT0 SREG I Table44 MCU INT0 Table 44. 0 ISC01 0 0 1 1 ISC00 0 1 0 1 INT0 INT0 INT0 INT0 --EIMSK / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 - R 0 1 INT1 R/W 0 0 INT0 R/W 0 EIMSK * 7..2 - Res: ATmega48/88/168 "0" * 1 - INT1: 1 INT1 "1" SREG I - EICRA (ISC11 ISC10) INT1 INT1 INT1 * 0 - INT0: 0 INT0 "1" SREG I - EICRA (ISC11 ISC10) INT0 INT0 INT0 --EIFR / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 - R 0 1 INTF1 R/W 0 0 INTF0 R/W 0 EIFR 76 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * 7..2 - Res: ATmega48/88/168 "0" * 1 - INTF1: 1 INT1 INTF1 SREG I EIMSK INT1 "1" MCU "1" INT1 INTF1 * 0 - INTF0: 0 INT0 INTF0 SREG I EIMSK INT0 "1" MCU "1" INT0 INTF0 -- PCICR / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 PCIE2 R/W 0 1 PCIE1 R/W 0 0 PCIE0 R/W 0 PCICR * 7..3 - Res: ATmega48/88/168 "0" * 2 - PCIE2: 2 PCIE2 SREG I "1" PCINT23..16 PCI2 PCINT23..16 PCMSK2 * 1 - PCIE1: 1 PCIE1 SREG I "1" PCINT14..8 PCI1 PCINT14..8 PCMSK1 * 0 - PCIE0: 0 PCIE0 SREG I "1" PCINT7..0 PCI0 PCINT7..0 PCMSK0 -- PCIFR / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 PCIF2 R/W 0 1 PCIF1 R/W 0 0 PCIF0 R/W 0 PCIFR * 7..3 - Res: ATmega48/88/168 "0" 77 2545A-AVR-09/03 * 2 - PCIF2: 2 PCINT23..16 PCIF2 "1" SREG I I PCICR PCIE2 "1" MCU "1" * 1 - PCIF1: 1 PCINT14..8 PCIF1 "1" SREG I I PCICR PCIE1 "1" MCU "1" * 0 - PCIF0: 0 PCINT7..0 PCIF0 "1" SREG I I PCICR PCIE0 "1"MCU "1" 2-- PCMSK2 / 7 PCINT23 6 PCINT22 5 PCINT21 4 PCINT20 3 PCINT19 2 PCINT18 1 PCINT17 0 PCINT16 PCMSK2 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 * 7..0 - PCINT23..16: 23..16 PCINT23..16I/O PCINT23..16 PCICR PCIE2 PCINT23..16 1-- PCMSK1 / 7 - 6 PCINT14 5 PCINT13 4 PCINT12 3 PCINT11 2 PCINT10 1 PCINT9 0 PCINT8 PCMSK1 R 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 * 7 - Res: ATmega48/88/168 "0" * 6..0 - PCINT14..8: 14..8 PCINT14..8 I/O PCINT14..8 PCICR PCIE1 PCINT14..8 0-- PCMSK0 / 7 PCINT7 R/W 0 6 PCINT6 R/W 0 5 PCINT5 R/W 0 4 PCINT4 R/W 0 3 PCINT3 R/W 0 2 PCINT2 R/W 0 1 PCINT1 R/W 0 0 PCINT0 R/W 0 PCMSK0 * 7..0 - PCINT7..0: 7..0 PCINT7..0 I/O PCINT7..0 PCICR PCIE0 PCINT7..0 78 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 PWM 8 / 0 T/C0 8 / PWM ( ) * * * ( ) * PWM * PWM * * (TOV0, OCF0A OCF0B) Figure288/ P2"ATmega48/88/168 " CPU I/O I/O P89"8 / " Figure 28. 8 T/C Count Clear Direction Control Logic TOVn (Int.Req.) clkTn T/C Oscillator TOP BOTTOM Prescaler clkI/O TOSC2 TOSC1 Timer/Counter TCNTn = =0 OCnA (Int.Req.) = OCRnA Fixed TOP Value Waveform Generation OCnA DATA BUS OCnB (Int.Req.) Waveform Generation OCnB = OCRnB TCCRnA TCCRnB "n" T/C 0 "x" A B TCNT0 T/C0 Table45 79 2545A-AVR-09/03 Table 45. BOTTOM MAX TOP 0x00 BOTTOM 0xFF ( 255) MAX TOPTOP 0xFF (MAX) OCR0A T/C(TCNT0) (OCR0A OCR0B) 8 ( Int.Req. ) TIFR0 TIMSK0 TIFR0 TIMSK0 T/C T0 ( )T/C T/C clkT0 (OCR0A OCR0B) T/C PWM (OCR0A OCR0B) P105" " (OCF0A OCF0B) T/C T/C T/C TCCR0B CS02:0 P95"T/C0 T/C1 " 8 T/C Figure29 Figure 29. DATA BUS TOVn (Int.Req.) Clock Select count TCNTn clear direction ( From Prescaler ) bottom top Control Logic clkTn Edge Detector Tn ( ) count direction clear clkTn top bottom TCNT0 1 1 TCNT0 ( ) T/C clkT0 TCNT0 TCNT0 (0) clkT0 clkT0 CS02:0 (CS02:0 = 0) clkT0 CPU TCNT0 CPU ( ) 80 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 T/C (TCCR0A)WGM01WGM00T/C(TCCR0B) WGM02 OC0A OC0B P84" " T/CTOV0WGM02:0 TOV0CPU 8TCNT0OCR0AOCR0B TCNT0 OCR0A OCR0B OCF0A OCR0B OCIE0A = 1 SREG I CPU OCF0A "1" WGM02:0 COM0x1:0 max bottom (P84" " ) Figure30 Figure 30. DATA BUS OCRnx TCNTn = (8-bit Comparator ) OCFnx (Int.Req.) top bottom FOCn Waveform Generator OCnx WGMn1:0 COMnx1:0 PWM OCR0x OCR0x top bottom PWM OCR0x CPU OCR0x CPU OCR0x PWM FOC0x "1" OCF0x / OC0x (COM0x1:0 OC0x "0""1" ) CPU TCNT0 OCR0x TCNT0 TCNT0 81 2545A-AVR-09/03 TCNT0 TCNT0 T/C TCNT0 OCR0x TCNT0 BOTTOM OC0x OC0x FOC0x OC0x COM0x1:0 COM0x1:0 COM0x1:0 COM0x1:0 (OC0x) COM0x1:0 OC0x Figure31 COM0x1:0 I/O I/O I/O COM0x1:0 I/O (DDR PORT) OC0xOC0x OC0x OC0x Figure 31. COMnx1 COMnx0 FOCn Waveform Generator D Q 1 OCnx Pin OCnx D DATA BUS 0 Q PORT D Q DDR clk I/O COM0x1:0 I/O OC0x DDR OC0x DDR_OC0x OC0x COM0x1:0 P89"8 / " COM0x1:0 CTC PWM COM0x1:0 = 0 OC0x PWMP88Table46 PWMP88Table47 PWM P88Table48 COM0x1:0 PWM FOC0x 82 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 - T/C - (WGM02:0) (COM0x1:0) COM0x1:0 PWM PWM COM0x1:0 (P83" " ) P87"T/C " (WGM02:0 = 0) 8 (TOP = 0xFF) 0x00 TCNT0 T/C TOV0 TOV0 9 TOV0 CPU CTC( ) CTC (WGM02:0 = 2) OCR0A TCNT0 OCR0A OCR0A TOP CTC Figure32 TCNT0TCNT0OCR0A TCNT0 Figure 32. CTC OCnx Interrupt Flag Set TCNTn OCn (Toggle) Period 1 2 3 4 (COMnx1:0 = 1) OCF0A TOP TOP CTC TOP BOTTOM OCR0A TCNT0 0xFF 0x00 OCF0A CTC OC0A COM0A1:0 = 1 OC0A fOC0 = fclk_I/O/2 (OCR0A = 0x00) f clk_I/O f OCnx = --------------------------------------------------2 N ( 1 + OCRnx ) N (1 8 64 1024) TOV0 MAX 0x00 83 2545A-AVR-09/03 PWM PWM (WGM02:0 = 3 7) PWM PWM PWM BOTTOM TOP BOTTOM WGM2:0 = 3 TOP 0xFF WGM2:0 = 7 TOP OCR0A OC0x TCNT0 OCR0x BOTTOM OC0x PWM PWM PWM DAC ( ) PWM MAX Figure33 TCNT0 PWM PWM TCNT0 OCR0x TCNT0 Figure 33. PWM OCRnx Interrupt Flag Set OCRnx Update and TOVn Interrupt Flag Set TCNTn OCn OCn (COMnx1:0 = 2) (COMnx1:0 = 3) Period 1 2 3 4 5 6 7 TOP T/C TOV0 PWM OC0x PWM COM0x1:0 2 PWM 3 PWM WGM02 COM0A1:0"1"OC0A OC0B ( P89Table50 ) OC0x PWM OC0x OCR0x TCNT0 ( ) ( TOP BOTTOM) ( ) PWM f clk_I/O f OCnxPWM = -----------------N 256 N (1 8 64 256 1024) OCR0A PWM OCR0A BOTTOM MAX+1OCR0AMAX COM0A1:0 OC0A (COM0x1:0 = 1) 50% OCR0A0foc2 = fclk_I/O/2 CTC OC0A PWM 84 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 PWM PWM (WGM02:0 = 1 5) PWM BOTTOM TOP TOP BOTTOM WGM2:0 = 1 TOP 0xFF WGM2:0 = 5 TOPOCR0A TOPTCNT0 OCR0x OC0x BOTTOM TCNT0 OCR0x OC0x PWM TOP TCNT0 TOP Figure34 TCNT0 PWM PWM TCNT0 OCR0x TCNT0 Figure 34. PWM OCnx Interrupt Flag Set OCRnx Update TOVn Interrupt Flag Set TCNTn OCnx OCnx (COMnx1:0 = 2) (COMnx1:0 = 3) Period 1 2 3 BOTTOM T/C TOV0 PWM OC0x PWM COM0x1:0 2 PWM COM0x1:0 3 PWM WGM02 COM0A "1" OC0A OC0B (P89Table51 ) OC0x OCR0x TCNT0 OC0x PWM PWM f clk_I/O f OCnxPCPWM = -----------------N 510 N (1 8 64 256 1024) OCR0A PWM PWM OCR0A BOTTOM OCR0A MAX PWM 85 2545A-AVR-09/03 Figure34 2 OCnx BOTTOM * Figure34 OCRnx MAX OCR0A MAX OCn BOTTOM T/C MAX OCnx OCnx OCRnx BOTTOM OCnx OCnx * T/C T/C clkT0 Figure35 T/C PWM MAX Figure 35. T/C clkI/O clkTn (clkI/O /1) TCNTn MAX - 1 MAX BOTTOM BOTTOM + 1 TOVn Figure36 Figure 36. T/C fclk_I/O/8 clkI/O clkTn (clkI/O /8) TCNTn MAX - 1 MAX BOTTOM BOTTOM + 1 TOVn Figure37OCF0B CTC PWMOCF0A OCR0A TOP 86 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 37. T/C OCF0x fclk_I/O/8 clkI/O clkTn (clkI/O /8) TCNTn OCRnx - 1 OCRnx OCRnx + 1 OCRnx + 2 OCRnx OCRnx Value OCFnx Figure38 CTCPWMOCF0ATCNT0 OCR0A TOP Figure 38. T/C CTC fclk_I/O/8 clkI/O clkTn (clkI/O /8) TCNTn (CTC) OCRnx TOP - 1 TOP BOTTOM BOTTOM + 1 TOP OCFnx 87 2545A-AVR-09/03 8 / T/C A--TCCR0A / 7 COM0A1 6 COM0A0 5 COM0B1 4 COM0B0 3 - 2 - 1 WGM01 0 WGM00 TCCR0A R/W 0 R/W 0 R/W 0 R/W 0 R 0 R 0 R/W 0 R/W 0 * 7:6 - COM0A1:0: A OC0A COM0A1:0 OC0A 1 OC0A COM0A1:0WGM02:0 Table46 WGM02:0 CTC ( PWM ) COM0A1:0 Table 46. PWM COM0A1 0 0 1 1 COM0A0 0 1 0 1 OC0A OC0A OC0A OC0A Table47 WGM01:0 PWM COM0A1:0 Table 47. PWM (1) COM0A1 0 0 1 1 Note: COM0A0 0 1 0 1 OC0A WGM02 = 0: OC0A WGM02 = 1: OC0A OC0A TOP OC0A OC0A TOP OC0A 1. OCR0A TOP COM0A1 TOP OC0A P85" PWM " Table48 WGM02:0 PWM COM0A1:0 Table 48. PWM (1) COM0A1 0 0 1 1 COM0A0 0 1 0 1 OC0A WGM02 = 0: OC0A WGM02 = 1: OC0A OC0A OC0A OC0A OC0A 88 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Note: 1. OCR0A TOP COM0A1 TOP OC0A P111" PWM " * 5:4 - COM0B1:0: B OC0B COM0B1:0 OC0B 1 OC0B COM0B1:0 WGM02:0 Table49 WGM02:0 CTC COM0B1:0 Table 49. PWM COM0B1 0 0 1 1 COM0B0 0 1 0 1 OC0B OC0B OC0B OC0B Table50 WGM02:0 PWM COM0B1:0 Table 50. PWM (1) COM0B1 0 0 1 1 Note: COM0B0 0 1 0 1 OC0B OC0B TOP OC0B OC0B TOP OC0B 1. OCR0B TOP COM0B1 TOP OC0B P85" PWM " Table51 WGM02:0 PWM COM0B1:0 Table 51. PWM (1) COM0B1 0 0 1 1 Note: COM0B0 0 1 0 1 OC0B OC0B OC0B OC0B OC0B 1. OCR0B TOP COM0B1 TOP OC0B P86" PWM " * 3, 2 - Res: ATmega48/88/168 "0" 89 2545A-AVR-09/03 * 1:0 - WGM01:0: TCCR0B WGM02 TOP Table52 T/C (CTC) PWM ( P84" " ) Table 52. 0 1 2 3 4 5 6 7 Notes: WGM02 0 0 0 0 1 1 1 1 WGM01 0 0 1 1 0 0 1 1 WGM00 0 1 0 1 0 1 0 1 T/C PWM CTC PWM PWM PWM TOP 0xFF 0xFF OCRA 0xFF - OCRA - OCRA OCRx TOP TOP - TOP - TOP TOV (1)(2) MAX BOTTOM MAX MAX - BOTTOM - TOP 1. MAX = 0xFF 2. BOTTOM = 0x00 90 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 T/C B--TCCR0B / 7 FOC0A 6 FOC0B 5 - 4 - 3 WGM02 2 CS02 1 CS01 0 CS00 TCCR0B W 0 W 0 R 0 R 0 R 0 R 0 R/W 0 R/W 0 * 7 - FOC0A: A FOC0A WGM PWM PWM TCCR0B 1 OC0A COM0A1:0 FOC0A COM0A1:0 FOC0A OCR0ATOPCTC FOC0A 0 * 6 - FOC0B: B FOC0B WGM PWM PWM TCCR0B 1 OC0B COM0B1:0 FOC0B COM0B1:0 FOC0B OCR0BTOPCTC FOC0B 0 * 5:4 - Res: ATmega48/88/168 "0" * 3 - WGM02: P89"T/C A - TCCR0A" * 2:0 - CS02:0: T/C Table 53. CS02 0 0 0 0 1 1 1 1 CS01 0 0 1 1 0 0 1 1 CS00 0 1 0 1 0 1 0 1 T/C clkI/O/1 ( ) clkI/O/8 ( ) clkI/O/64 ( ) clkI/O/256 ( ) clkI/O/1024 ( ) T0 T0 91 2545A-AVR-09/03 T/C0 T0 T/C --TCNT0 / 7 R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 TCNT0 R/W 0 TCNT0[7:0] T/C 8 TCNT0 TCNT0 TCNT0 OCR0x A--OCR0A / 7 R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 OCR0A R/W 0 OCR0A[7:0] A 8 TCNT0 OC0A B--OCR0B / 7 R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 OCR0B R/W 0 OCR0B[7:0] B 8 TCNT0 OC0B T/C --TIMSK0 / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 OCIE0B R/W 0 1 OCIE0A R/W 0 0 TOIE0 R/W 0 TIMSK0 * 7..3 - Res: ATmega48/88/168 0 * 2 - OCIE0B: T/C B OCIE0B I "1" T/C B T/C TIFR0 OCF0B * 1 - OCIE0A: T/C0 A OCIE0A I "1" T/C0 A T/C0 TIFR0 OCF0A * 0 - TOIE0: T/C0 TOIE0 I "1" T/C0 T/C0 TIFR0 TOV0 T/C 0 --TIFR0 7 6 5 4 3 2 1 0 92 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 - / R 0 - R 0 - R 0 - R 0 - R 0 OCF0B R/W 0 OCF0A R/W 0 TOV0 R/W 0 TIFR0 * 7..3 - Res: ATmega48/88/168 0 * 2 - OCF0B: T/C0 B T/C OCR0B( 0B) OCF0B 1 SREG IOCIE0B(T/C B ) OCF0B * 1 - OCF0A: T/C0 A T/C0 OCR0A( 0A) OCF0A 1 SREG I OCIE0A(T/C0 ) OCF0A * 0 - TOV0: T/C0 T/C0 TOV0 TOV0 1 SREG I TOIE0(T/C0 ) TOV0 WGM02:0 Table52 P90" " 93 2545A-AVR-09/03 T/C0 T/C1 T/C1 T/C0 T/C1 T/C0 CSn2:0 = 1 T/C T/C fCLK_I/O 4 fCLK_I/O/8 fCLK_I/O/64 fCLK_I/O/256 fCLK_I/O/1024 T/C T/C1 T/C0 T/C (6 > CSn2:0 > 1) 1 N+1 N (8 64 256 1024) T/C T/C T/C T1/T0 T/C clkT1/clkT0 T1/T0 ( ) Figure39 T1/T0 clkI/O CSn2:0 = 7 clkT1 CSn2:0 = 6 clkT0 Figure 39. T1/T0 Tn_sync (To Clock Select Logic) Tn D LE Q D Q D Q clk I/O Synchronization Edge Detector T1/T0 2.5 3.5 T1/T0 T/C 50% (fExtClk < fclk_I/O/2) (Nyquist ) ( ) fclk_I/O/2.5 94 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 40. T/C0 T/C1 (1) clk I/O Clear PSRSYNC T0 Synchronization T1 Synchronization clkT1 clkT0 Note: 1. (T1/T0) Figure39. T/C --GTCCR / 7 TSM R/W 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 - R 0 1 PSRASY R/W 0 0 PSRSYNC R/W 0 GTCCR * 7 - TSM: T/C TSMT/C TSM PSR2 PSR10 / T/C / T/C TSM PSR2 PSR10 / * 0 - PSRSYNC: PSRSYNCT/C1T/C0 TSM T/C1T/C0 95 2545A-AVR-09/03 16 / 1 16T/C() * 16 ( 16 PWM) * 2 * * * * ( ) * PWM * PWM * * * 4 (TOV1OCF1A OCF1B ICF1) "n" T/C "x" TCNT1 T/C1 16 T/C Figure41 P2"ATmega48/88/168 I/O " CPU I/O I/O I/O I/O P117"16 / " Figure 41. 16 T/C (1) Count Clear Direction Control Logic TOVn (Int.Req.) clkTn Clock Select Edge Detector TOP BOTTOM ( From Prescaler ) Timer/Counter TCNTn Tn = =0 OCnA (Int.Req.) = OCRnA Fixed TOP Values Waveform Generation OCnA DATA BUS OCnB (Int.Req.) Waveform Generation OCnB = OCRnB ICFn (Int.Req.) Edge Detector ( From Analog Comparator Ouput ) ICRn Noise Canceler ICPn TCCRnA TCCRnB Note: 1. P2Figure 1 P65Table34 P71Table40 T/C1 96 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 / TCNT1 OCR1A/B ICR1 16 16 P99" 16 " T/C TCCR1A/B 8 CPU ( Int.Req.) TIFR1 TIMSK1 TIFR1 TIMSK1 T/CT1 T/C( ) T/C clkT1 OCR1A/B T/C PWM OC1A/B P104" " OCF1A/B ICP1 ( P214" " ) ( ) T/C ( ) TOP T/C OCR1A ICR1 PWM OCR1A TOP OCR1A PWM OCR1A TOP TOP ICR1 OCR1A PWM Table 54. BOTTOM MAX TOP 0x0000 BOTTOM 0xFFFF ( 65535) MAX TOP TOP 0x00FF 0x01FF 0x03FF OCR1A ICR1 97 2545A-AVR-09/03 16 TCNT1 OCR1A/B ICR1 AVR CPU 8 16 16 16 8 8 16 16 16 CPU 16 8 8 16 16 CPU 16 16 OCR1A/B 16 16 16 OCR1A/B ICR1 "C" 16 (1) ... ; TCNT1 0x01FF ldi r17,0x01 ldi r16,0xFF out TCNT1H,r17 out TCNT1L,r16 ; TCNT1 r17:r16 in in ... r16,TCNT1L r17,TCNT1H C (1) unsigned int i; ... /* TCNT1 0x01FF */ TCNT1 = 0x1FF; /* TCNT1 i */ i = TCNT1; ... Note: 1. I/O I/O "LDS" "STS""SBRS""SBRC""SBR" "CBR" I/O "IN" "OUT" "SBIS""SBIC" "CBI" "SBI" TCNT1 r17:r16 16 16 16 16 16 98 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TCNT1 OCR1A/B ICR1 (1) TIM16_ReadTCNT1: ; in cli ; TCNT1 r17:r16 in in r16,TCNT1L r17,TCNT1H r18,SREG ; ; out SREG,r18 ret C (1) unsigned int TIM16_ReadTCNT1( void ) { unsigned char sreg; unsigned int i; /* */ sreg = SREG; /* */ _CLI(); /* TCNT1 i */ i = TCNT1; /* */ SREG = sreg; return i; } Note: 1. I/O I/O "LDS" "STS""SBRS""SBRC""SBR" "CBR" I/O "IN" "OUT" "SBIS""SBIC" "CBI" "SBI" TCNT1 r17:r16 99 2545A-AVR-09/03 TCNT1 OCR1A/B ICR1 (1) TIM16_WriteTCNT1: ; in cli ; TCNT1 r17:r16 out TCNT1H,r17 out TCNT1L,r16 ; out SREG,r18 ret r18,SREG ; C (1) void TIM16_WriteTCNT1( unsigned int i ) { unsigned char sreg; unsigned int i; /* */ sreg = SREG; /* */ _CLI(); /* TCNT1 i */ TCNT1 = i; /* */ SREG = sreg; } Note: 1. I/O I/O "LDS" "STS""SBRS""SBRC""SBR" "CBR" I/O "IN" "OUT" "SBIS""SBIC" "CBI" "SBI" r17:r16 TCNT1 16 100 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 T/C T/C T/C B(TCCR1B) (CS12:0) P95"T/C0 T/C1 " 16 T/C 16 Figure42 Figure 42. DATA BUS (8-bit) TOVn (Int.Req.) TEMP (8-bit) Clock Select Count TCNTnH (8-bit) TCNTnL (8-bit) Clear Direction Control Logic clkTn Edge Detector Tn TCNTn (16-bit Counter) ( From Prescaler ) TOP BOTTOM ( ) Count Direction Clear clkT1 TOP BOTTOM TCNT1 1 1 TCNT1 / TCNT1 TCNT1 (0) 16 8 I/O TCNT1H 8 TCNT1L 8 CPU TCNT1H CPU TCNT1H (TEMP) TCNT1L TCNT1HTCNT1L TCNT1H CPU 8 16 TCNT1 clkT1 1 1 clkT1 CS12:0 CS12:0= 0 CPU TCNT1 clkT1 CPU TCCR1A TCCR1B WGM13:0 ( ) OC1x P107" " WGM13:0 TOV1 TOV1 CPU T/C ICP1 Figure43 "n" / 101 2545A-AVR-09/03 Figure 43. DATA BUS (8-bit) TEMP (8-bit) ICRnH (8-bit) WRITE ICRnL (8-bit) TCNTnH (8-bit) TCNTnL (8-bit) ICRn (16-bit Register) TCNTn (16-bit Counter) ACO* Analog Comparator ICPn ACIC* ICNC ICES Noise Canceler Edge Detector ICFn (Int.Req.) ICP1 ( ) ACO 16 TCNT1 ICR1 ICF1 ICIE1 = 1 ICF1 I/O "1" ICR1 ICR1L ICR1H TEMP CPU ICR1H TEMP ICR1 ICR1 TOP ICR1 WGM13:0 ICR1 ICR1H I/O ICR1L P99" 16 " 16 ICP1T/C1 ACSR ACIC CP1ACOT1(P94Figure 39 ), 4 ICR1 TOP T/C ICP1 4 4 TCCR1B ICNC1 ICR1 4 102 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ICR1 ICR1 ICR1 TOP ICR1 ICF1 ( I/O "1") ICF1 16 TCNT1 OCR1x OCF1x OCIE1x = 1 OCF1x OCF1x I/O "1" WGM13:0 COM1x1:0 TOP BOTTOM (P107" " ) A T/C TOP ( ) TOP Figure44 "n" (n = 1 T/C1) "x" (A/B) Figure 44. DATA BUS (8-bit) TEMP (8-bit) OCRnxH Buf. (8-bit) OCRnxL Buf. (8-bit) TCNTnH (8-bit) TCNTnL (8-bit) OCRnx Buffer (16-bit Register) TCNTn (16-bit Counter) OCRnxH (8-bit) OCRnxL (8-bit) OCRnx (16-bit Register) = (16-bit Comparator ) OCFnx (Int.Req.) TOP BOTTOM Waveform Generator OCnx WGMn3:0 COMnx1:0 T/C 12 PWM OCR1x (CTC) OCR1x TOP BOTTOM PWM OCR1x CPU OCR1x CPU OCR1x OCR1x( ) (T/C TCNT1 ICR1 103 2545A-AVR-09/03 ) OCR1x TEMP 16 OCR1x TEMP OCR1xH CPU I/O TEMP OCR1xL TEMP OCR1x OCR1x P99" 16 " 16 PWM FOC1x "1" OCF1x / OC1x (COMx1:0 OC1x ) CPU TCNT1 OCR1x TCNT1 TCNT1 TCNT1 T/C TCNT1OCR1x PWM TOP TCNT1 TOP 0xFFFF TCNT1 BOTTOM OC1x OC1x FOC1x OC1x COM1x1:0 COM1x1:0 TCNT1 104 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 COM1x1:0 COM1x1:0 OC1x COM1x1:0 OC1x Figure45 COM1x1:0 I/O I/O I/O COM1x1:0 I/O (DDR PORT) OC1x OC1x OC1x COM1x "0" Figure 45. COMnx1 COMnx0 FOCnx Waveform Generator D Q 1 OCnx Pin OCnx D Q 0 DATA BUS PORT D Q DDR clk I/O COM1x1:0 OC1x I/O OC1x (DDR) OC1x DDR_OC1x Table55 Table56 Table57 OC1x COM1x1:0 P117"16/" COM1x1:0 105 2545A-AVR-09/03 COM1x1:0 CTC PWM COM1x1:0 = 0 OC1x PWM P116Table55 PWM P116Table56 PWM P117Table57 . COM1x1:0 PWM FOC1x - T/C - (WGM13:0) (COM1x1:0) COM1x1:0 PWM PWM COM1x1:0 ( P106" " ) P115" / " (WGM13:0 = 0) (MAX = 0xFFFF) 0x0000 TCNT1T/CTOV1 TOV117 TOV1 CPU 106 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 CTC( ) CTC (WGM13:0 = 4 12) OCR1A ICR1 TCNT1 OCR1A(WGM13:0 = 4) ICR1 (WGM13:0 = 12) OCR1A ICR1 TOP CTC Figure46 TCNT1TCNT1OCR1A ICR1 TCNT1 Figure 46. CTC OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) TCNTn OCnA (Toggle) Period 1 2 3 4 (COMnA1:0 = 1) OCF1A ICF1 TOP TOP CTC TOP BOTTOM OCR1A ICR1 TCNT1 0xFFFF 0x0000 OCR1A ICR1 PWM OCR1A TOP (WGM13:0 = 15) OCR1A CTC OC0A COM1A1:0 = 1 OC1A (DDR_OC1A = 1) fOC2 = fclk_I/O/2 (OCR1A = 0x0000) f clk_I/O f OCnA = ---------------------------------------------------2 N ( 1 + OCRnA ) N (1 8 64 256 1024) TOV1 MAX 0x0000 107 2545A-AVR-09/03 PWM PWM (WGM13:0 = 5 6 7 14 15) PWM PWM PWM BOTTOM MAX BOTTOM OC1x TCNT1 OCR1x TOP OCR1x PWM PWM PWM DAC ( ) PWM PWM 89 10 ICR1 OCR1A 2 (ICR1 OCR1A 0x0003) 16 (ICR1 OCR1A MAX) PWM log ( TOP + 1 ) R FPWM = ----------------------------------log ( 2 ) PWM 0x00FF 0x01FF 0x03FF (WGM13:0 = 5 6 7)ICR1 (WGM13:0 = 14) OCR1A (WGM13:0 = 15) Figure47 OCR1A ICR1 TOP PWM TCNT1 PWM PWM TCNT1 OCR1x TCNT1 OC1x Figure 47. PWM OCRnx/TOP Update and TOVn Interrupt Flag Set and OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) TCNTn OCnx OCnx (COMnx1:0 = 2) (COMnx1:0 = 3) Period 1 2 3 4 5 6 7 8 TOP T/C TOV1 TOP OCR1A ICR1 OC1A ICF1 TOV1 TOP TOPTOP TCNT1OCR1x TOP OCR1x "0" TOP ICR1 OCR1A ICR1 ICR1 ICR1 TCNT1 0xFFFF 0x0000 OCR1A OCR1A OCR1A TCNT1 TOP OCR1A TCNT1 TOV1 108 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TOP ICR1 TOP OCR1A OC1A PWM PWM ( TOP ) OCR1A PWM OC1x PWM COM1x1:0 2 PWM 3 PWM ( P116Table ) OC1x DDR_OC1x PWM OC1x OCR1x TCNT1 ( ) ( TOP BOTTOM) ( ) PWM f clk_I/O f OCnxPWM = ----------------------------------N ( 1 + TOP ) N (1 8 64 256 1024) OCR1x PWM PWM OCR1x BOTTOM(0x0000) TOP+1 OCR1x TOP COM1x1:0 OC1A (COM1A1:0 = 1) 50% OCR1A TOP (WGM13:0 = 15) OCR1A 0(0x0000) foc2 = fclk_I/O/2 CTC OC1A PWM 109 2545A-AVR-09/03 PWM PWM (WGM13:0 = 1 2 3 11) 10 PWM BOTTOM TOP TOP BOTTOM TOP TCNT1 OCR1x OC1x BOTTOM TCNT1 OCR1x OC1x PWM PWM 8 9 10 ICR1 OCR1A 2 (ICR1 OCR1A 0x0003) 16 (ICR1 OCR1A MAX) PWM log ( TOP + 1 ) R PCPWM = ----------------------------------log ( 2 ) PWM 0x00FF 0x01FF 0x03FF (WGM13:0 = 12 3) ICR1 (WGM13:0 = 10) OCR1A (WGM13:0 = 11) TCNT1 TOP Figure48 OCR1AICR1TOPPWM TCNT1 PWM PWM TCNT1 OCR1x TCNT1 OC1x Figure 48. PWM OCRnx/TOP Update and OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) TOVn Interrupt Flag Set (Interrupt on Bottom) TCNTn OCnx OCnx (COMnx1:0 = 2) (COMnx1:0 = 3) Period 1 2 3 4 BOTTOM T/C TOV1 TOP OCR1A ICR1 OCR1x OC1A ICF1 TOPTOP TCNT1OCR1x TOP OCR1x "0" Figure48 T/C TOP OCR1x OCR1x / TOP PWM TOP TOP 110 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 T/C TOP TOP PWM OC1x PWM COM1x1:0 2 PWM COM1x1:0 3 PWM ( P117Table ) OC1x DDR_OC1x OCR1x TCNT1 OC1x PWM PWM f clk_I/O f OCnxPCPWM = ---------------------------2 N TOP N (1 8 64 256 1024) OCR1x PWM PWM OCR1x BOTTOM OCR1x TOP PWM OCR1A TOP (WGM13:0 = 11) COM1A1:0 = 1 OC1A 50% 111 2545A-AVR-09/03 PWM PWM (WGM13:0 = 8 9) - PWM - PWM PWM BOTTOM TOP TOP BOTTOM TOP TCNT1 OCR1x OC1xBOTTOMTCNT1OCR1x OC1x PWM PWM OCR1x Figure48 Figure49 PWM PWM ICR1 OCR1A 2 (ICR1 OCR1A 0x0003) 16 (ICR1 OCR1A MAX) PWM log ( TOP + 1 ) R PFCPWM = ----------------------------------log ( 2 ) PWM ICR1 (WGM13:0 = 8) OCR1A (WGM13:0 = 9) TCNT1 TOP Figure49 OCR1A ICR1 TOP PWM TCNT1 PWM PWM TCNT1 OCR1x TCNT1 OC1x Figure 49. PWM OCnA Interrupt Flag Set or ICFn Interrupt Flag Set (Interrupt on TOP) OCRnx/TOP Updateand TOVn Interrupt Flag Set (Interrupt on Bottom) TCNTn OCnx OCnx (COMnx1:0 = 2) (COMnx1:0 = 3) Period 1 2 3 4 OCR1x T/C TOV1 TOP OCR1A ICR1 TCNT1 TOP OC1A CF1 TOP BOTTOM TOPTOP TCNT1OCR1x Figure49 PWM OCR1x BOTTOM 112 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TOP ICR1 TOP OCR1A OC1A PWM PWM ( TOP ) OCR1A PWM OC1x PWM COM1x1:0 2 PWM 3 PWM ( P117Table ) OC1x PWM OC1x OCR1x TCNT1 ( ) TCNT1 ( ) PWM f clk_I/O f OCnxPFCPWM = ---------------------------2 N TOP N (1 8 64 256 1024) OCR1x PWM PWM OCR1x BOTTOM OCR1x TOP PWM OCR1A TOP (WGM13:0 = 9) COM1A1:0 = 1 OC1A 50% 113 2545A-AVR-09/03 / / clkT1 OCR1x OCR1x ( ) Figure50 OCF1x Figure 50. T/C OCF1x clkI/O clkTn (clkI/O /1) TCNTn OCRnx - 1 OCRnx OCRnx + 1 OCRnx + 2 OCRnx OCRnx Value OCFnx Figure51 Figure 51. T/C OCF1x fclk_I/O/8 clkI/O clkTn (clkI/O /8) TCNTn OCRnx - 1 OCRnx OCRnx + 1 OCRnx + 2 OCRnx OCRnx Value OCFnx Figure52 TOP PWM OCR1x BOTTOM TOP BOTTOM BOTTOM+1 TOP-1 BOTTOM TOV1 114 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 52. T/C clkI/O clkTn (clkI/O /1) TCNTn (CTC and FPWM) TOP - 1 TOP BOTTOM BOTTOM + 1 TCNTn (PC and PFC PWM) TOP - 1 TOP TOP - 1 TOP - 2 TOVn (FPWM) and ICFn (if used as TOP) OCRnx (Update at TOP) Old OCRnx Value New OCRnx Value Figure53 Figure 53. T/C fclk_I/O/8 clk I/O clk Tn (clk /8) I/O TCNTn (CTC and FPWM) TOP - 1 TOP - 1 TOP BOTTOM BOTTOM + 1 TCNTn (PC and PFC PWM) TOP TOP - 1 TOP - 2 TOVn (FPWM) and ICF n (if used as TOP) OCRnx (Update at TOP) Old OCRnx Value New OCRnx Value 115 2545A-AVR-09/03 16 / T/C1 A--TCCR1A / 7 COM1A1 6 COM1A0 5 COM1B1 4 COM1B0 3 - 2 - 1 WGM11 0 WGM10 TCCR1A R/W 0 R/W 0 R/W 0 R/W 0 R 0 R 0 R/W 0 R/W 0 * 7:6 - COM1A1:0: A * 5:4 - COM1B1:0: B COM1A1:0 COM1B1:0 OC1A OC1B COM1A1:0(COM1B1:0) "1" OC1A(OC1B)I/O OC1A(OC1B) OC1A(OC1B) COM1x1:0 WGM13:0 Table55 WGM13:0 CTC ( PWM) COM1x1:0 Table 55. PWM COM1A1/COM1B1 0 0 1 1 COM1A0/COM1B0 0 1 0 1 OC1A/OC1B OC1A/OC1B OC1A/OC1B( ) OC1A/OC1B ( ) Table56 WGM13:0 PWM COM1x1:0 Table 56. PWM(1) COM1A1/COM1B1 0 0 COM1A0/COM1B0 0 1 OC1A/OC1B WGM13:0 = 15: OC1A OC1B WGM1 OC1A/OC1B OC1A/OC1BOC1A/OC1B TOP OC1A/OC1B OC1A/OC1B TOP 1 1 Note: 0 1 1. OCR1A/OCR1B TOP COM1A1/COM1B1 OC1A/OC1B / P109" PWM " 116 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table57 WGM13:0 PWM PWM COM1x1:0 Table 57. PWM (1) COM1A1/COM1B1 0 0 COM1A0/COM1B0 0 1 OC1A/OC1B WGM13:0 = 9 14: OC1A OC1B WGM1 OC1A/OC1B OC1A/OC1B OC1A/OC1B OC1A/OC1B OC1A/OC1B 1 1 Note: 0 1 1. OCR1A/OCR1B TOP COM1A1/COM1B1 P111" PWM " * 1:0 - WGM11:0: TCCR1B WGM13:2 ---- ( Table58) T/C ( ) (CTC) (PWM) (P107" " ) 117 2545A-AVR-09/03 Table 58. (1) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Note: WGM13 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 WGM12 (CTC1) 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 WGM11 (PWM11) 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 WGM10 (PWM10) 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 / 8 PWM 9 PWM 10 PWM CTC 8 PWM 9 PWM 10 PWM PWM PWM PWM PWM CTC PWM PWM TOP 0xFFFF 0x00FF 0x01FF 0x03FF OCR1A 0x00FF 0x01FF 0x03FF ICR1 OCR1A ICR1 OCR1A ICR1 - ICR1 OCR1A OCR1x TOP TOP TOP TOP TOP TOP BOTTOM BOTTOM TOP TOP - TOP TOP TOV1 MAX BOTTOM BOTTOM BOTTOM MAX TOP TOP TOP BOTTOM BOTTOM BOTTOM BOTTOM MAX - TOP TOP 1. CTC1 PWM11:0 WGM12:0 / T/C1 B--TCCR1B 7 ICNC1 R/W 0 6 ICES1 R/W 0 5 - R 0 4 WGM13 R/W 0 3 WGM12 R/W 0 2 CS12 R/W 0 1 CS11 R/W 0 0 CS10 R/W 0 TCCR1B * 7 - ICNC1: * ICNC1 ICP1 ICP1 4 4 4 * 6 - ICES1: ICP1 ICES "0" ICES1 "1" ICES1 ICR1 ICF1 ICR1 TOP ( TCCR1A TCCR1B WGM13:0 ) ICP1 * 5 - TCCR1B "0" 118 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * 4:3 - WGM13:2: TCCR1A * 2:0 - CS12:0: 3 T/C Figure50 Figure51 Table 59. CS12 0 0 0 0 1 1 1 1 CS11 0 0 1 1 0 0 1 1 CS10 0 1 0 1 0 1 0 1 (T/C ) clkI/O/1 ( ) clkI/O/8 ( ) clkI/O/64 ( ) clkI/O/256 ( ) clkI/O/1024 ( ) T1 T1 T1 1 T/C1 T/C1 C--TCCR1C / 7 FOC1A R/W 0 6 FOC1B R/W 0 5 - R 0 4 - R 0 3 - R 0 2 - R 0 1 - R 0 0 - R 0 TCCR1C * 7 - FOC1A: A * 6 - FOC1B: B FOC1A/FOC1BWGM13:0PWM PWM TCCR1A FOC1A/FOC1B "1" COM1x1:0 OC1A/OC1B FOC1A/FOC1B COM1x1:0 FOC1A/FOC1B OCR1A TOP CTC FOC1A/FOC1B T/C1--TCNT1H TCNT1L 7 6 5 4 3 2 1 0 TCNT1H TCNT1L R/W 0 R/W 0 R/W 0 TCNT1[15:8] TCNT1[7:0] / R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 TCNT1HTCNT1LT/C1TCNT1 / 16 CPU 8 TEMPTEMP 16 P99" 16 " 119 2545A-AVR-09/03 TCNT1TCNT1OCR1x TCNT1 1A--OCR1AH OCR1AL 7 6 5 4 3 2 1 0 OCR1AH OCR1AL R/W 0 R/W 0 R/W 0 OCR1A[15:8] OCR1A[7:0] / R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 1B--OCR1BH OCR1BL 7 6 5 4 3 2 1 0 OCR1BH OCR1BL OCR1B[15:8] OCR1B[7:0] / R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 16 TCNT1 OC1x 16 CPU 8 TEMP TEMP 16 P99" 16 " 120 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 1--ICR1H ICR1L 7 6 5 4 ICR1[7:0] / R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 3 2 1 0 ICR1H ICR1L ICR1[15:8] ICP1(T/C1) TCNT1 ICR1 ICR1 TOP 16 CPU 8 TEMP TEMP 16 P99" 16 " T/C1 --TIMSK1 / 7 - R 0 6 - R 0 5 ICIE1 R/W 0 4 - R 0 3 - R 0 2 OCIE1B R/W 0 1 OCIE1A R/W 0 0 TOIE1 R/W 0 TIMSK1 * 7, 6 - Res: ATmega48/88/168 0 * 5 - ICIE1: T/C1 "1" I "1" T/C1 T IFR1 ICF1 CPU T/C1 ( P48 " " ) * 4, 3 - Res: ATmega48/88/168 0 * 2 - OCIE1B: T/C1 B "1" I "1" T/C1 B TIFR1 OCF1B CPU T/C1 B ( P48 " " ) * 1 - OCIE1A: T/C1 A "1" I "1" T/C1 A TIFR1 OCF1A CPU T/C1 A ( P48 " " ) * 0 - TOIE1: T/C1 TOIE1 I "1" T/C1 TIFR1 TOV1 CPU T/C1 ( P44" " ) 121 2545A-AVR-09/03 T/C1 --TIFR1 / 7 - R 0 6 - R 0 5 ICF1 R/W 0 4 - R 0 3 - R 0 2 OCF1B R/W 0 1 OCF1A R/W 0 0 TOV1 R/W 0 TIFR1 * 7, 6 - Res: ATmega48/88/168 0 * 5 - ICF1: T/C1 ICP1 ICF1 ICR1 TOP TOP ICF1 ICF1 "1" * 4, 3 - Res: ATmega48/88/168 0 * 2 - OCF1B: T/C1 B TCNT1 OCR1B "1" (FOC1B) OCF1B B OCF1B "1" * 1 - OCF1A: T/C1 A TCNT1 OCR1A "1" (FOC1A) OCF1A A OCF1A "1" * 0 - TOV1: T/C1 T/C1 CTC T/C1 TOV1 TOV1 P118Table58 OCF1A "1" 122 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 8 PWM / 2 T/C2 8 / * * ( ) * , (PWM) * * 10 * (TOV2 OCF2A) * 32 kHz I/O Figure54 8 T/C P2"ATmega48/88/168 " CPUI/O I/OI/O I/O P134"8 T/C " Figure 54. 8 T/C Count Clear Direction Control Logic TOVn (Int.Req.) clkTn T/C Oscillator TOP BOTTOM Prescaler clkI/O TOSC2 TOSC1 Timer/Counter TCNTn = =0 OCnA (Int.Req.) = OCRnA Fixed TOP Value Waveform Generation OCnA DATA BUS OCnB (Int.Req.) Waveform Generation OCnB = OCRnB TCCRnA TCCRnB / TCNT2 OCR2A 8 ( Int.Req.) TIFR2 TIMSK2 TIFR2 TIMSK2 T/C2 TOSC1/2 ASSR T/C() T/C clkT2 OCR2A OCR2B TCNT2 PWM OC2A OCR2B P126"" OCF2AOCF2B 123 2545A-AVR-09/03 "n" / 2 (TCNT2T/C2) Table 60 Table 60. BOTTOM MAX TOP 0x00 BOTTOM 0xFF ( 255) MAX TOPTOP 0xFF (MAX) OCR2A T/C T/C clkT2 MCU clkI/O ASSR AS2 TOSC1 TOSC2 P139" - ASSR" P142" / " 8 T/C Figure55 Figure 55. DATA BUS TOVn (Int.Req.) TOSC1 count TCNTn clear direction Control Logic clk Tn Prescaler T/C Oscillator TOSC2 bottom top clkI/O ( ) count direction clear clkT2 top bottom TCNT2 1 1 TCNT2 ( ) T/C TCNT2 TCNT2 (0) clkT2 clkT2 CS22:0 (CS22:0 = 0) clkT2 CPU TCNT2 CPU ( ) T/C (TCCR2A) WGM21 WGM20 TCCR2B WGM22 OC2A OC2B P128" " T/CTOV2WGM22:0 TOV2CPU 124 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 8TCNT2OCR2AOCR2B TCNT2 OCR2A OCR2B OCF2A OCF2B OCIE2A = 1 OCF2A "1" WGM22:0 COM2x1:0 max bottom (P128" " ) Figure56 Figure 56. DATA BUS OCRnx TCNTn = (8-bit Comparator ) OCFnx (Int.Req.) top bottom FOCn Waveform Generator OCnx WGMn1:0 COMnX1:0 PWM OCR2x OCR2x top bottom PWM OCR2x CPU OCR2x CPU OCR2x PWM FOC2x "1" OCF2x / OC2x (COM2x1:0 OC2x ) CPU TCNT2 OCR2x TCNT2 TCNT2 TCNT2 T/C TCNT2 OCR2x TCNT2 BOTTOM OC2x OC2x FOC2x OC2x TCNT2 125 2545A-AVR-09/03 COM2x1:0 COM2x1:0 126 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 COM2x1:0 COM2x1:0 (OC2x) COM2x1:0 OC2x Figure57 COM2x1:0 I/O I/O I/O COM2x1:0 I/O (DDR PORT) OC2x OC2x OC2x Figure 57. COMnx1 COMnx0 FOCnx Waveform Generator D Q 1 OCnx Pin OCnx D Q 0 DATA BUS PORT D Q DDR clk I/O COM2x1:0 OC2x I/O OC2x (DDR) OC2x DDR_OC2x OC2x COM2x1:0 P134"8 T/C " COM2x1:0 CTC PWM COM2x1:0 = 0 OC2x PWM P134Table64 PWM P134Table65 PWM P134Table66 COM2x1:0 PWM FOC2x - T/C - (WGM22:0) (COM2x1:0) COM2x1:0 PWM PWM COM2x1:0 (P128" " ) P132"T/C " 127 2545A-AVR-09/03 (WGM22:0 = 0) 8 (TOP = 0xFF) 0x00 TCNT0 T/C TOV2 TOV2 9 TOV2 CPU CTC( ) CTC (WGM22:0 = 2) OCR2A TCNT2 OCR2A OCR2A TOP CTCFigure58 TCNT2TCNT2OCR2A TCNT2 Figure 58. CTC OCnx Interrupt Flag Set TCNTn OCnx (Toggle) Period 1 2 3 4 (COMnx1:0 = 1) OCF2A TOP TOP CTC TOP BOTTOM OCR2A TCNT2 0xFF 0x00 OCR2A CTC OC2A COM2A1:0 = 1 OC2A fOC2 = fclk_I/O/2 (OC2A = 0x00) f clk_I/O f OCnx = --------------------------------------------------2 N ( 1 + OCRnx ) N (1 8 32 64 128 256 1024) TOV2 MAX 0x00 PWM PWM (WGM22:0 = 3 7) PWM PWM PWM BOTTOM MAX BOTTOM WGM2:0 = 3 TOP 0xFF and OCR2A when MGM2:0 = 7 TOP OCR2A OC2x TCNT2 OCR2x BOTTOM OC2x PWM 128 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 PWM PWM DAC ( ) PWM TOP Figure59 TCNT2 PWM PWM TCNT2 OCR2x TCNT2 Figure 59. PWM OCRnx Interrupt Flag Set OCRnx Update and TOVn Interrupt Flag Set TCNTn OCnx OCnx (COMnx1:0 = 2) (COMnx1:0 = 3) Period 1 2 3 4 5 6 7 TOP T/C TOV2 PWM OC2x PWM COM2x1:0 2 PWM 3 PWM WGM2:0 = 3 TOP0xFF MGM2:0 = 7 TOPOCR2A( P133Table62 ) OC2x PWM OC2x OCR2x TCNT2 ( ) ( TOP BOTTOM) ( ) PWM f clk_I/O f OCnxPWM = -----------------N 256 N (1 8 32 64 128 256 1024) OCR2A PWM OCR2A BOTTOM MAX+1OCR2AMAX COM2A1:0 OC2x(COM2x1:0 = 1) 50% OCR2A 0 foc2 = fclk_I/O/2 CTC OC2A PWM PWM PWM (WGM22:0 = 1 5) PWM BOTTOM TOP TOP BOTTOM WGM2:0 = 3 TOP 0xFF MGM2:0 = 7 129 2545A-AVR-09/03 TOPOCR2A TOPTCNT2 OCR2x OC2x BOTTOM TCNT2 OCR2x OC2x PWM PWM 8 TOP TCNT2 TOP Figure60 TCNT2 PWM PWM TCNT2 OCR2x TCNT2 Figure 60. PWM OCnx Interrupt Flag Set OCRnx Update TOVn Interrupt Flag Set TCNTn OCnx OCnx (COMnx1:0 = 2) (COMnx1:0 = 3) Period 1 2 3 BOTTOM T/C TOV2 PWM OC2x PWM COM2x1:0 2 PWM COM2x1:0 3 PWM ( P133Table63 ) OC2x OCR2x TCNT2 OC2x PWM PWM f clk_I/O f OCnxPCPWM = -----------------N 510 N (1 8 32 64 128 256 1024) OCR2A PWM PWM OCR2A BOTTOM OCR2A MAX PWM Figure60 2 OCn BOTTOM * Figure60 OCR2A MAX OCR2A MAX OCn BOTTOM 130 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 T/C MAX OCn OCn * OCR2A BOTTOM OCn OCn T/C T/C clkT2 clkI/O T/C Figure61 T/C PWM MAX Figure 61. T/C clkI/O clkTn (clkI/O /1) TCNTn MAX - 1 MAX BOTTOM BOTTOM + 1 TOVn Figure62 Figure 62. T/C fclk_I/O/8 clkI/O clkTn (clkI/O /8) TCNTn MAX - 1 MAX BOTTOM BOTTOM + 1 TOVn Figure63 ( CTC )OCF2A Figure 63. T/C OCF2A fclk_I/O/8 clkI/O clkTn (clkI/O /8) TCNTn OCRnx - 1 OCRnx OCRnx + 1 OCRnx + 2 OCRnx OCRnx Value OCFnx Figure64 CTC OCF2A TCNT2 131 2545A-AVR-09/03 Figure 64. T/C CTC fclk_I/O/8 clkI/O clkTn (clkI/O /8) TCNTn (CTC) OCRnx TOP - 1 TOP BOTTOM BOTTOM + 1 TOP OCFnx 132 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 8 T/C T/C A--TCCR2A / 7 COM2A1 6 COM2A0 5 COM2B1 4 COM2B0 3 - 2 - 1 WGM21 0 WGM20 TCCR2A R/W 0 R/W 0 R/W 0 R/W 0 R 0 R 0 R/W 0 R/W 0 * 7:6 - COM2A1:0: A OC2A COM2A1:0 OC2A 1 OC2A COM2A1:0 WGM22:0 Table61 WGM22:0 CTC ( PWM ) COM2A1:0 Table 61. PWM COM2A1 0 0 1 1 COM2A0 0 1 0 1 OC2A OC2A OC2A OC2A Table62 WGM21:0 PWM COM2A1:0 Table 62. PWM (1) COM2A1 0 0 1 1 Note: COM2A0 0 1 0 1 OC2A WGM22 = 0 OC2A WGM22 = 1 OC2A OC2A TOP OC2A OC2A TOP OC2A 1. OCR2A TOP COM2A1 TOP P129" PWM " Table63 WGM22:0 PWM COM2A1:0 Table 63. PWM (1) COM2A1 0 0 1 1 Note: COM2A0 0 1 0 1 OC2A WGM22 = 0 OC2A WGM22 = 1 OC2A OC2A OC2A OC2A OC2A 1. OCR2A TOP COM2A1 TOP P130" PWM " 133 2545A-AVR-09/03 * 5:4 - COM2B1:0: B OC2B COM2B1:0 OC2B 1 OC2B COM2B1:0 WGM22:0 Table64 WGM22:0 CTC COM2B1:0 Table 64. PWM COM2B1 0 0 1 1 COM2B0 0 1 0 1 OC2B OC2B OC2B OC2B Table65 WGM22:0 PWM COM2B1:0 Table 65. PWM (1) COM2B1 0 0 1 1 Note: COM2B0 0 1 0 1 OC2B OC2B TOP OC2B OC2B TOP OC2B 1. OCR2B TOP COM2B1 TOP P130" PWM " Table66 WGM22:0 PWM COM2B1:0 Table 66. PWM (1) COM2B1 0 0 1 1 Note: COM2B0 0 1 0 1 OC2B OC2B OC2B OC2B OC2B 1. OCR2B TOP COM2B1 TOP P130" PWM " * 3, 2 - Res: ATmega48/88/168 "0" * 1:0 - WGM21:0: TCCR2B WGM22 TOP Table67 T/C (CTC) PWM P128" " 134 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 67. 0 1 2 3 4 5 6 7 Notes: WGM2 0 0 0 0 1 1 1 1 WGM1 0 0 1 1 0 0 1 1 WGM0 0 1 0 1 0 1 0 1 T/C PWM CTC PWM PWM PWM TOP 0xFF 0xFF OCRA 0xFF - OCRA - OCRA OCRx TOP TOP - TOP - TOP TOV (1)(2) MAX BOTTOM MAX MAX - BOTTOM - TOP 1. MAX= 0xFF 2. BOTTOM= 0x00 135 2545A-AVR-09/03 T/C B--TCCR2B / 7 FOC2A 6 FOC2B 5 - 4 - 3 WGM22 2 CS22 1 CS21 0 CS20 TCCR2B W 0 W 0 R 0 R 0 R 0 R 0 R/W 0 R/W 0 * 7 - FOC2A: A FOC2A WGM PWM PWM TCCR2B FOC2A 1 OC2A COM2A1:0 FOC2A COM2A1:0 FOC2A OCR2A TOP CTC FOC2A "0" * 6 - FOC2B: B FOC2B WGM PWM PWM TCCR2B FOC2B 1 OC2B COM2B1:0 FOC2B COM2B1:0 FOC2B OCR2BTOPCTC FOC2B "0" * 5:4 - Res: ATmega48/88/168 "0" * 3 - WGM22: P134"T/C A - TCCR2A" * 2:0 - CS22:0: T/C Table*NOTICE: 136 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 *NOTICE: CS22 0 0 0 0 1 1 1 1 CS21 0 0 1 1 0 0 1 1 CS20 0 1 0 1 0 1 0 1 T/C clkT2S/1 ( ) clkT2S/8 ( ) clkT2S/32 ( ) clkT2S/64 ( ) clkT2S/128 ( ) clkT2S/256 ( ) clkT2S/1024 ( ) T/C0 T0 T/C0 T/C --TCNT2 / 7 R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 TCNT2 R/W 0 TCNT2[7:0] T/C 8 TCNT2 TCNT2 TCNT2 OCR2x A--OCR2A / 7 R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 OCR2A R/W 0 OCR2A[7:0] A 8 TCNT2 OC2A B--OCR2B / 7 R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 OCR2B R/W 0 OCR2B[7:0] B 8 TCNT2 OC2B 137 2545A-AVR-09/03 / --ASSR / 7 - R 0 6 EXCLK R/W 0 5 AS2 R/W 0 4 TCN2UB R 0 3 OCR2AUB R 0 2 OCR2BUB R 0 1 TCR2AUB R 0 0 TCR2BUB R 0 ASSR * 6 - EXCLK: EXCLK "1" TOSC1 32 kHz EXCLK "0" * 5 - AS2: T/C2 AS2"0"T/C2I/OclkI/OAS2"1"T/C2TOSC1 AS2 TCNT2 OCR2A OCR2B TCCR2A TCCR2B * 4 - TCN2UB: T/C2 T/C2 TCNT2TCN2UB TCNT2 TCN2UB TCN2UB 0 TCNT2 * 3 - OCR2AUB: 2 T/C2 OCR2A OCR2UB OCR2A OCR2AUB OCR2AUB 0 OCR2A * 2 - OCR2BUB: 2 T/C2 OCR2BOCR2BUB OCR2B OCR2BUB OCR2BUB 0 OCR2B * 1 - TCR2AUB: T/C 2 T/C2 TCCR2ATCR2AUB TCCR2A TCR2AUB TCR2AUB 0 TCCR2A * 0 - TCR2BUB: T/C 2 T/C2 TCCR2BTCR2BUB TCCR2B TCR2BUB TCR2BUB 0 TCCR2B TCNT2 OCR2AOCR2BTCCR2A TCCR2B TCNT2 OCR2A OCR2B TCCR2A TCCR2B / 2 T/C2 * TCNT2OCR2x TCCR2x 1. OCIE2x TOIE2 T/C2 2. AS2 3. TCNT2 OCR2x TCCR2x 138 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 4. TCN2xUB OCR2xUB TCR2xUB 5. T/C2 6. * * 4 TCNT2 OCR2x TCCR2x TOSC1 3 TCNT2 OCR2x ASSR T/C2 MCU ADC TCNT2 OCR2xTCCR2x MCUT/C2 T/C2 MCU OCR2x TCNT2 (OCR2xUB 0)MCU MCU T/C2 ADC TOSC1 TOSC1 1. TCCR2x TCNT2 OCR2x 2. ASSR 3. ADC * T/C2 32.768 kHz Standby 1 /Standby 1 T/C2 T/C2 ADC MCU 4 SLEEP TCNT2 TCNT2 TOSC TCNT2 I/O TOSC1 I/O TCNT2 TOSC1 TOSC1 TCNT2 1. OCR2x TCCR2x 2. 3. TCNT2 * 3 / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 OCIE2B R/W 0 1 OCIE2A R/W 0 0 TOIE2 R/W 0 TIMSK2 * * * * / 2 --TIMSK2 139 2545A-AVR-09/03 * 2 - OCIE2B: T/C2 B OCIE2B I "1" T/C2 B T/C2 TIFR2 OCF2B * 1 - OCIE2A: A OCIE2A I "1" T/C2 A T/C2 TIFR2 OCF2A * 0 - TOIE2: T/C2 TOIE2 I "1" T/C2 T/C2 TIFR2 TOV2 / 2 --TIFR2 / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 OCF2B R/W 0 1 OCF2A R/W 0 0 TOV2 R/W 0 TIFR2 * 2 - OCF2B: 2 B T/C2 OCR2B( 2) OCF2B 1 SREG I OCIE2B OCF2B * 1 - OCF2A: 2 A T/C2 OCR2A( 2) OCF2A 1 SREG I OCIE2A OCF2A * 0 - TOV2: T/C2 T/C2 TOV2 TOV2 1 SREG ITOIE2A TOV2 PWM T/C2 0x00 TOV2 140 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 / Figure 65. T/C2 clkI/O TOSC1 clkT2S Clear clkT2S/8 10-BIT T/C PRESCALER clkT2S/32 clkT2S/64 clkT2S/1024 0 GTCCR R/W 0 AS2 PSRASY 0 CS20 CS21 CS22 TIMER/COUNTER2 CLOCK SOURCE clkT2 T/C2 clkT2S clkT2 clkI/O ASSR AS2 T/C2 TOSC1 T/C2 RTC TOSC1 TOSC2 C ( 32.768 kHz ) TOSC1 T/C2 clkT2S/8 clkT2S/32 clkT2S/64 clkT2S/128 clkT2S/256 clkT2S/1024 clkT2S0 () GTCCRPSR2 T/C --GTCCR / 7 TSM R/W 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 - R 0 1 R/W 0 PSRASY PSRSYNC * 1 - PSR2:T/C2 "1" T/C2 T/C2 TSM T/C P95"7 - TSM: T/C " clkT2S/256 clkT2S/128 141 2545A-AVR-09/03 --SPI SPI ATmega48/88/168 AVR ATmega48/88/168 SPI * 3 * * LSB MSB * 7 * * * * (CK/2) USART SPI P177 "SPI USART" Figure 66. SPI (1) DIVIDER /2/4/8/16/32/64/128 SPI2X Note: 1. SPI P2Figure 1 P65Table34 SPI Figure67 SS SCK MOSI MOSI MISO MISO SS SPI SPI SS SPI SPI 8 SPI SPIF SPCR SPI 142 ATmega48/88/168 2545A-AVR-09/03 SPI2X ATmega48/88/168 SPIE SPDR SS SS SPI MISO SPI SPDR SCK SPDR SS SPIF SPCRSPISPIE SPDR Figure 67. SPI - SHIFT ENABLE SPI SPI SPI SPI SCK SPI fosc/4 SPI MOSIMISOSCK SS Table68 P64" " 143 2545A-AVR-09/03 Table 68. SPI (1) MOSI MISO SCK SS Note: SPI SPI 1. P66" B " SPI SPI DDR_SPIDD_MOSI DD_MISODD_SCK MOSI PB5 DD_MOSI DDB5 DDR_SPI DDRB 144 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 (1) SPI_MasterInit: ; MOSI SCK ldi out ldi out ret SPI_MasterTransmit: ; (r16) out SPDR,r16 Wait_Transmit: ; sbis SPSR,SPIF rjmp Wait_Transmit ret r17,(1< C (1) void SPI_MasterInit(void) { /* MOSI SCK */ DDR_SPI = (1< 1. 145 2545A-AVR-09/03 SPI (1) SPI_SlaveInit: ; MISO ldi out ldi out ret SPI_SlaveReceive: ; sbis SPSR,SPIF rjmp SPI_SlaveReceive ; in ret r16,SPDR r17,(1< C (1) void SPI_SlaveInit(void) { /* MISO */ DDR_SPI = (1< 1. 146 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SS SPI SS SPI SS MISO ( ) SS SPI SS / SS SPI SPI (SPCR MSTR ) SS SS I/O SPI SS SS SPI SS SPI SPI 1. SPCR MSTR SPI MOSI SCK 2. SPSR SPIF SPI SPI SS MSTR "1" SPI SPI --SPCR / 7 SPIE R/W 0 6 SPE R/W 0 5 DORD R/W 0 4 MSTR R/W 0 3 CPOL R/W 0 2 CPHA R/W 0 1 SPR1 R/W 0 0 SPR0 R/W 0 SPCR * 7 - SPIE: SPI SPSR SPIF SREG SPI * 6 - SPE: SPI SPE SPI SPI SPE * 5 - DORD: DORD LSB MSB * 4 - MSTR: / MSTR MSTR "1" SS MSTR SPSR SPIF MSTR * 3 - CPOL: CPOL SCK SCK Figure68 Figure69 CPOL Table 69. CPOL CPOL 0 1 147 2545A-AVR-09/03 * 2 - CPHA: CPHA SCK SCK Figure68 Figure69 CPHA Table 70. CPHA CPHA 0 1 * 1, 0 - SPR1, SPR0: SPI SCK SPR1 SPR0 SCK fosc Table 71. SCK SPI2X 0 0 0 0 1 1 1 1 SPR1 0 0 1 1 0 0 1 1 SPR0 0 1 0 1 0 1 0 1 SCK fosc/4 fosc/16 fosc/64 fosc/128 fosc/2 fosc/8 fosc/32 fosc/64 148 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SPI --SPSR / 7 SPIF R 0 6 WCOL R 0 5 - R 0 4 - R 0 3 - R 0 2 - R 0 1 - R 0 0 SPI2X R/W 0 SPSR * 7 - SPIF: SPI SPIF SPCR SPIE SPI SPI SS SPIF SPIF SPSR SPDRSPIF * 6 - WCOL: SPI SPDR WCOL WCOL SPSR SPDR * 5..1 - Res: ATmega48/88/168 0 * 0 - SPI2X: SPI SPI ( Table71) SCK CPU fosc /4 ATmega48/88/168 SPI EEPROM P270 SPI SPI --SPDR / 7 MSB R/W X R/W X R/W X R/W X R/W X R/W X R/W X 6 5 4 3 2 1 0 LSB R/W X SPDR SPI / SPI 149 2545A-AVR-09/03 SCK 4 CPHA CPOL SPI Figure68 Figure69 SCK Table69 Table70 Table 72. CPOL CPOL=0, CPHA=0 CPOL=0, CPHA=1 CPOL=1, CPHA=0 CPOL=1, CPHA=1 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) SPI 0 1 2 3 Figure 68. CPHA = 0 SPI SCK (CPOL = 0) mode 0 SCK (CPOL = 1) mode 2 SAMPLE I MOSI/MISO CHANGE 0 MOSI PIN CHANGE 0 MISO PIN SS MSB first (DORD = 0) MSB LSB first (DORD = 1) LSB Bit 6 Bit 1 Bit 5 Bit 2 Bit 4 Bit 3 Bit 3 Bit 4 Bit 2 Bit 5 Bit 1 Bit 6 LSB MSB Figure 69. CPHA = 1 SPI SCK (CPOL = 0) mode 1 SCK (CPOL = 1) mode 3 SAMPLE I MOSI/MISO CHANGE 0 MOSI PIN CHANGE 0 MISO PIN SS MSB first (DORD = 0) LSB first (DORD = 1) MSB LSB Bit 6 Bit 1 Bit 5 Bit 2 Bit 4 Bit 3 Bit 3 Bit 4 Bit 2 Bit 5 Bit 1 Bit 6 LSB MSB 150 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 USART0 (USART) * ( ) * * * * 5, 6, 7, 8, 9 1 2 * * * * * , * * USART SPI P177 "SPI USART" . Figure70USART CPUI/OI/O Figure 70. USART (1) Clock Generator UBRRn [H:L] OSC BAUD RATE GENERATOR SYNC LOGIC PIN CONTROL XCKn Transmitter UDRn(Transmit) TX CONTROL PARITY GENERATOR TRANSMIT SHIFT REGISTER PIN CONTROL TxDn DATA BUS Receiver CLOCK RECOVERY RX CONTROL RECEIVE SHIFT REGISTER DATA RECOVERY PIN CONTROL RxDn UDRn (Receive) PARITY CHECKER UCSRnA UCSRnB UCSRnC Note: 1. P2Figure 1 P71Table40 USART0 151 2545A-AVR-09/03 USART ( ) XCK ( ) USART UDRn USART 4 USART UMSELn C (UCSRnC) ( ) UCSRnA U2X (UMSELn = 1) XCK (DDR_XCKn) ( ) ( ) XCKn Figure71 Figure 71. UBRRn foscn Prescaling Down-Counter UBRRn+1 /2 /4 /2 U2Xn 0 1 0 DDR_XCKn 1 OSC txclk xcki XCKn Pin xcko Sync Register Edge Detector 0 1 UMSELn DDR_XCKn UCPOLn 1 0 rxclk txclk rxclk xcki xcko fosc -- ( ) ( ) XCK ( ) XCK ( ) XTAL ( ) Figure71 USARTUBRRn UBRRnL UBRRn fosc/(UBRRn+1) 2 8 16 2 8 16 UMSELn U2Xn DDR_XCKn 152 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table73 (/)UBRRn Table 73. (U2Xn = 0) (1) UBRRn f OSC UBRRn = ----------------------- - 1 16BAUD f OSC BAUD = ------------------------------------------16 ( UBRRn + 1 ) (U2Xn = 1) f OSC UBRRn = -------------------- - 1 8BAUD f OSC BAUD = --------------------------------------8 ( UBRRn + 1 ) f OSC UBRRn = -------------------- - 1 2BAUD f OSC BAUD = --------------------------------------2 ( UBRRn + 1 ) Note: 1. (bps) BAUD ( bps) fOSC UBRRn UBRRnH UBRRnL (0-4095) Table81 UBRRn (U2Xn) UCSRnA U2Xn "0" U2Xn168 Figure71 XCKn CPU XCK f OSC f XCK < -----------4 153 2545A-AVR-09/03 fosc (UMSELn = 1) XCKn ( ) ( ) TxDn XCKn RxDn Figure 72. XCK UCPOL = 1 XCK RxD / TxD Sample UCPOL = 0 XCK RxD / TxD Sample UCRSC UCPOLn XCKn Figure72 UCPOLn=0 XCKn XCKn UCPOLn=1 ( ) USART 30 * * * * 1 5 6 7 8 9 1 2 9 Figure73 Figure 73. FRAME (IDLE) St 0 1 2 3 4 [5] [6] [7] [8] [P] Sp1 [Sp2] (St / IDLE) St (n) P Sp IDLE (0 8) (RxDn TxDn) 154 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 UCSRnB UCSRnC UCSZn2:0 UPMn1:0 USBSn USART UCSZn2:0 UPMn1:0 USBSn (FE) "0" P even = d n - 1 ... d 3 d 2 d 1 d 0 0 P odd = d n - 1 ... d 3 d 2 d 1 d 0 1 Peven Podd dn n USART USART USART ( ) USART TXCn RXC ( UDR )TXCn 155 2545A-AVR-09/03 USART ( ) r17:r16 (1) USART_Init: ; out out ldi out ldi out ret UBRRnH, r17 UBRRnL, r16 r16, (1< ; : 8 , 2 C (1) void USART_Init( unsigned int baud ) { /* */ UBRRnH = (unsigned char)(baud>>8); UBRRnL = (unsigned char)baud; /* */ UCSRnB = (1< 1. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" I/O 156 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 --USART UCSRnB TXEN USART TxDn I/O USART XCKn CPU UDRn ( ) U2Xn XCKn UDREn 8 UDR USART R16 (1) USART_Transmit: ; sbis UCSRnA,UDREn rjmp USART_Transmit ; out ret UDRn,r16 5 8 C (1) void USART_Transmit( unsigned char data ) { /* */ while ( !( UCSRnA & (1< 1. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" UDREn 157 2545A-AVR-09/03 9 9 (UCSZn = 7) 9 UCSRnB TXB8 8 UDRn 9 R17:R16 (1)(2) USART_Transmit: ; sbis UCSRnA,UDREn rjmp USART_Transmit ; 9 r17 TXB8 cbi sbi out ret UCSRnB,TXB8 UCSRnB,TXB8 UDRn,r16 sbrc r17,0 ; 8 C (1)(2) void USART_Transmit( unsigned int data ) { /* */ while ( !( UCSRnA & (1< 1. UCSRnB UCSRnB TXB8 2. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" 9 158 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 USART USART UDREn TXCn UDREn "1" UCSRnA "0" UCSRnB UDRIEn "1" UDREn ( ) USART UDRn UDREn UDRn UDREn TXCn TXCn "1" TXCn RS-485 UCSRB TXCIEn "1" TXCn USART TXCn TXCn (UPMn1 = 1) TXEN TxDn I/O 159 2545A-AVR-09/03 --USART UCSRB (RXENn) USART RxDn USART XCKn XCKn UDR RXCn 8 UDRn 0 USART (1) USART_Receive: ; sbis UCSRnA, RXCn rjmp USART_Receive ; in ret r16, UDRn 5 8 C (1) unsigned char USART_Receive( void ) { /* */ while ( !(UCSRnA & (1< 1. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" RXCn 160 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 9 9 (UCSZ=7) UDR 8 UCSRnB RXB8n 9 FEnDORn UPEn UCSRnA UDRn UDRn FIFO FIFO TXB8n FEn DORn UPEn USART 9 (1) USART_Receive: ; sbis UCSRnA, RXCn rjmp USART_Receive ; 9 in in in r18, UCSRnA r17, UCSRnB r16, UDRn ; -1 andi r18,(1< C (1) unsigned int USART_Receive( void ) { unsigned char status, resh, resl; /* */ while ( !(UCSRnA & (1< Note: 1. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" 161 2545A-AVR-09/03 I/O USART (RXCn) 1 0( ) (RXENn = 0) RXCn UCSRB ((RXCIEn) RXCn ( ) USART UDRn RXCn USART (FEn) (DORn) (UPEn) UCSRnA UDRn UCSRnA (UDRn) "0" (FEn) ( 1) FEn 0 FE 1 UCSRnC USBSn FE UCSRnA 0 (DORn) ( ) DORn UDRn UDRn UCSRnA 0 DORn (UPEn) UPEn UCSRnA 0 P156" " P163" " UPMn1 ( ) UPMn0 (UPEn) (UPMn1 = 1) UPEn (UDRn) (RXENn ) RxDn FIFO 162 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 FIFO UDRn RXCn (1) USART_Flush: sbis UCSRnA, RXCn ret in r16, UDRn rjmp USART_Flush C (1) void USART_Flush( void ) { unsigned char dummy; while ( UCSRnA & (1< 1. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" USART RxDn Figure74 16 8 (U2Xn = 1) RxDn ( ) 0 Figure 74. RxD IDLE START BIT 0 Sample (U2X = 0) 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 Sample (U2X = 1) 0 1 2 3 4 5 6 7 8 1 2 RxD ( ) ( ) 1 0 8 9 10( ) 4 5 6( ) ( ) 16 8 163 2545A-AVR-09/03 Figure75 Figure 75. RxD BIT n Sample (U2X = 0) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 Sample (U2X = 1) 1 2 3 4 5 6 7 8 1 2 3 1 2 3 0RxD Figure76 Figure 76. RxD STOP 1 (A) (B) (C) Sample (U2X = 0) 1 2 3 4 5 6 7 8 9 10 0/1 0/1 0/1 Sample (U2X = 1) 1 2 3 4 5 6 0/1 0 FEn Figure76 A B C ( Table74) ( D + 1 )S R slow = --------------------------------------------S - 1 + D S + SF D S SF SM (D = 5 10 ) S = 16 S = 8 SF = 8 SF = 4 SM = 9 SM = 5 ( D + 2 )S R fast = ------------------------------------( D + 1 )S + S M 164 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Rslow Rfast Table74 Table75 165 2545A-AVR-09/03 Table 74. (U2Xn = 0) D # ( + ) 5 6 7 8 9 10 Rslow (%) 93.20 94.12 94.81 95.36 95.81 96.17 Rfast (%) 106.67 105.79 105.11 104.58 104.14 103.78 (%) +6.67/-6.8 +5.79/-5.88 +5.11/-5.19 +4.58/-4.54 +4.14/-4.19 +3.78/-3.83 (%) 3.0 2.5 2.0 2.0 1.5 1.5 Table 75. (U2Xn = 1) D # ( + ) 5 6 7 8 9 10 Rslow (%) 94.12 94.92 95.52 96.00 96.39 96.70 Rfast (%) 105.66 104.92 104,35 103.90 103.53 103.23 (%) +5.66/-5.88 +4.92/-5.08 +4.35/-4.48 +3.90/-4.00 +3.53/-3.61 +3.23/-3.30 (%) 2.5 2.0 1.5 1.5 1.5 1.0 (XTAL) 2% UBRRn 166 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 UCSRnA (MPCMn) USART CPU MPCMn 5 8 9 9 (RXB8n) ( 9 ) 1 MPCMn 9 (UCSZn = 7) (TXB8n = 1) 9 (TXB8n) 1 (TXBn = 0) 9 1. (UCSRnA MPCMn ) 2. UCSRnA RXCn 3. UDRn UCSRnA MPCMn MPCMn 1 4. MPCMn 1 5. MPCMn 2 5 8 n n+1 5 8 (USBSn = 1) - - (SBI CBI) MPCMn MPCMn TXCn I/O SBI CBI USART USART I/O --UDRn 7 6 5 4 RXB[7:0] TXB[7:0] / R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 3 2 1 0 UDRn ( ) UDRn ( ) USART USART I/O USART UDRn UDRn (TXB) UDRn (RXB) 567 0 UCSRnA UDREn UDREn UDRn USART 167 2545A-AVR-09/03 TxDn FIFO FIFO - - (SBI CBI) (SBIC SBIS) FIFO USART A-- UCSRnA / 7 RXCn R 0 6 TXCn R/W 0 5 UDREn R 1 4 FEn R 0 3 DORn R 0 2 UPEn R 0 1 U2Xn R/W 0 0 MPCMn R/W 0 UCSRnA * 7 - RXCn: USART RXCn RXCn RXCn ( RXCIEn ) * 6 - TXCn: USART (UDRn) TXCn TXCn 1 TXCn ( TXCIEn ) * 5 - UDREn: USART UDREn (UDRn) UDREn 1 UDREn ( UDRIEn ) UDREn * 4 - FEn: 0 FEn (UDRn) 1 FEn "0" UCSRnA "0" * 3 - DORn: DORn ( ) (UDRn) UCSRnA "0" * 2 - UPEn: USART (UPMn1 = 1) UPEn (UDRn) UCSRnA "0" * 1 - U2Xn: 1 16 8 168 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * 0 - MPCMn: MPCMn USART MPCMn P168" " USART B-- UCSRnB / 7 RXCIEn R/W 0 6 TXCIEn R/W 0 5 UDRIEn R/W 0 4 RXENn R/W 0 3 TXENn R/W 0 2 UCSZn2 R/W 0 1 RXB8n R 0 0 TXB8n R/W 0 UCSRnB * 7 - RXCIEn: RXCn RXCIEn 1 SREG UCSRn A RXCn 1 USART * 6 - TXCIEn: TXCn TXCIEn 1 SREG UCSRnA TXCn 1 USART * 5 - UDRIEn: USART UDREn UDRIEn 1 SREG UCSRnA UDREn 1 USART * 4 - RXENn: USART RxDn USART FEn DORn UPEn * 3 - TXENn: USART TxDn USART TXENn TxDn I/O * 2 - UCSZn2: UCSZn2 UCSRnC UCSZn1:0 ( ) * 1 - RXB8n: 8 9 RXB8n 9 UDRn RXB8n * 0 - TXB8n: 8 9 TXB8n9 UDRn 169 2545A-AVR-09/03 USART nC-- UCSRnC / 7 UMSELn1 R/W 0 6 UMSELn0 R/W 0 5 UPMn1 R/W 0 4 UPMn0 R/W 0 3 USBSn R/W 0 2 UCSZn1 R/W 1 1 UCSZn0 R/W 1 0 UCPOLn R/W 0 UCSRnC * 7:6 - UMSELn1:0 USART USARTn Table76 . Table 76. UMSELn UMSELn1 0 0 1 1 Note: UMSELn0 0 1 0 1 ( ) SPI (MSPIM)(1) 1. SPI (MSPIM) P177"SPI USART" * 5:4 - UPMn1:0: UPMn UCSRnA UPEn Table 77. UPMn UPMn1 0 0 1 1 UPMn0 0 1 0 1 * 3 - USBSn: Table 78. USBSn USBSn 0 1 1 2 170 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * 2:1 - UCSZn1:0: UCSZn1:0 UCSRnB UCSZn2 ( ) Table 79. UCSZn UCSZn2 0 0 0 0 1 1 1 1 UCSZn1 0 0 1 1 0 0 1 1 UCSZn0 0 1 0 1 0 1 0 1 5 6 7 8 9 * 0 - UCPOLn: UCPOLn XCKn Table 80. UCPOLn UCPOLn 0 1 (TxDn ) XCKn XCKn (RxDn ) XCKn XCKn USART --UBRRL UBRRH 15 - 7 14 - 6 R R/W 0 0 13 - 5 R R/W 0 0 12 - 11 10 9 8 UBRRnH UBRRnL 0 R/W R/W 0 0 UBRRn[11:8] 3 R/W R/W 0 0 2 R/W R/W 0 0 1 R/W R/W 0 0 UBRRn[7:0] 4 R R/W 0 0 / R R/W 0 0 * 15:12 - * UBRRnH * 11:0 - UBRR11:0: USART 12 USART UBRRnH USART 4 UBRRnL 8 UBRRnL Table81 UBRRn 0.5% 171 2545A-AVR-09/03 ( P165" " ) BaudRate Closest Match Error[%] = ------------------------------------------------------- - 1 * 100% BaudRate Table 81. UBRRn fosc = 1.0000 MHz (bps) 2400 4800 9600 14.4k 19.2k 28.8k 38.4k 57.6k 76.8k 115.2k 230.4k 250k Note: (1) fosc = 1.8432 MHz U2Xn = 0 UBRRn fosc = 2.0000 MHz U2Xn = 0 UBRRn U2Xn = 0 UBRRn U2Xn = 1 UBRRn U2Xn = 1 UBRRn U2Xn = 1 UBRRn 0.2% 0.2% -7.0% 8.5% 8.5% 8.5% -18.6% 8.5% - - - - 0.2% 0.2% 0.2% -3.5% -7.0% 8.5% 8.5% 8.5% -18.6% 8.5% - - 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -25.0% 0.0% - - 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% - 0.2% 0.2% 0.2% -3.5% -7.0% 8.5% 8.5% 8.5% -18.6% 8.5% - - 0.2% 0.2% 0.2% 2.1% 0.2% -3.5% -7.0% 8.5% 8.5% 8.5% - 0.0% 25 12 6 3 2 1 1 0 - - - - 51 25 12 8 6 3 2 1 1 0 - - 47 23 11 7 5 3 2 1 1 0 - - 95 47 23 15 11 7 5 3 2 1 0 - 51 25 12 8 6 3 2 1 1 0 - - 103 51 25 16 12 8 6 3 2 1 - 0 62.5 kbps 125 kbps 115.2 kbps 230.4 kbps 125 kbps 250 kbps 1. UBRRn = 0 = 0.0% 172 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 82. UBRRn ( ) fosc = 3.6864 MHz (bps) 2400 4800 9600 14.4k 19.2k 28.8k 38.4k 57.6k 76.8k 115.2k 230.4k 250k 0.5M 1M 1. (1) fosc = 4.0000 MHz U2Xn = 1 U2Xn = 0 UBRRn fosc = 7.3728 MHz U2Xn = 1 U2Xn = 0 UBRRn U2Xn = 0 UBRRn U2Xn = 1 UBRRn 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% - - UBRRn 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% -7.8% - 0.2% 0.2% 0.2% 2.1% 0.2% -3.5% -7.0% 8.5% 8.5% 8.5% 8.5% 0.0% - - UBRRn 0.2% 0.2% 0.2% -0.8% 0.2% 2.1% 0.2% -3.5% -7.0% 8.5% 8.5% 0.0% 0.0% - 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% -7.8% - 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% -7.8% -7.8% 95 47 23 15 11 7 5 3 2 1 0 0 - - 191 95 47 31 23 15 11 7 5 3 1 1 0 - 103 51 25 16 12 8 6 3 2 1 0 0 - - 207 103 51 34 25 16 12 8 6 3 1 1 0 - 191 95 47 31 23 15 11 7 5 3 1 1 0 - 383 191 95 63 47 31 23 15 11 7 3 3 1 0 230.4 kbps UBRRn = 0 = 0.0% 460.8 kbps 250 kbps 0.5 Mbps 460.8 kbps 921.6 kbps 173 2545A-AVR-09/03 Table 83. UBRRn ( ) fosc = 8.0000 MHz (bps) 2400 4800 9600 14.4k 19.2k 28.8k 38.4k 57.6k 76.8k 115.2k 230.4k 250k 0.5M 1M 1. (1) fosc = 11.0592 MHz U2Xn = 0 UBRRn fosc = 14.7456 MHz U2Xn = 0 UBRRn U2Xn = 0 UBRRn U2Xn = 1 UBRRn U2Xn = 1 UBRRn U2Xn = 1 UBRRn 0.2% 0.2% 0.2% -0.8% 0.2% 2.1% 0.2% -3.5% -7.0% 8.5% 8.5% 0.0% 0.0% - -0.1% 0.2% 0.2% 0.6% 0.2% -0.8% 0.2% 2.1% 0.2% -3.5% 8.5% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% - - 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% -7.8% - 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% -7.8% -7.8% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 5.3% -7.8% -7.8% 207 103 51 34 25 16 12 8 6 3 1 1 0 - 416 207 103 68 51 34 25 16 12 8 3 3 1 0 287 143 71 47 35 23 17 11 8 5 2 2 - - 575 287 143 95 71 47 35 23 17 11 5 5 2 - 383 191 95 63 47 31 23 15 11 7 3 3 1 0 767 383 191 127 95 63 47 31 23 15 7 6 3 1 0.5 Mbps UBRRn = 0 = 0.0% 1 Mbps 691.2 kbps 1.3824 Mbps 921.6 kbps 1.8432 Mbps 174 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 84. UBRR ( ) fosc = 16.0000 MHz (bps) 2400 4800 9600 14.4k 19.2k 28.8k 38.4k 57.6k 76.8k 115.2k 230.4k 250k 0.5M 1M 1. (1) fosc = 18.4320 MHz U2Xn = 0 UBRRn fosc = 20.0000 MHz U2Xn = 0 UBRRn U2Xn = 0 UBRRn U2Xn = 1 UBRRn U2Xn = 1 UBRRn U2Xn = 1 UBRRn -0.1% 0.2% 0.2% 0.6% 0.2% -0.8% 0.2% 2.1% 0.2% -3.5% 8.5% 0.0% 0.0% 0.0% 0.0% -0.1% 0.2% -0.1% 0.2% 0.6% 0.2% -0.8% 0.2% 2.1% -3.5% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% -7.8% - - 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 2.4% -7.8% - 0.0% 0.2% 0.2% -0.2% 0.2% 0.9% -1.4% -1.4% 1.7% -1.4% 8.5% 0.0% - - 0.0% 0.0% 0.2% -0.2% 0.2% -0.2% 0.2% 0.9% -1.4% -1.4% -1.4% 0.0% 0.0% - 416 207 103 68 51 34 25 16 12 8 3 3 1 0 832 416 207 138 103 68 51 34 25 16 8 7 3 1 479 239 119 79 59 39 29 19 14 9 4 4 - - 959 479 239 159 119 79 59 39 29 19 9 8 4 - 520 259 129 86 64 42 32 21 15 10 4 4 - - 1041 520 259 173 129 86 64 42 32 21 10 9 4 - 1 Mbps UBRRn = 0 = 0.0% 2 Mbps 1.152 Mbps 2.304 Mbps 1.25 Mbps 2.5 Mbps 175 2545A-AVR-09/03 SPI USART USART SPI SPI (MSPIM) * , * * SPI ( 0, 1, 2 3) * LSB MSB( ) * ( ) * * (fXCKmax = fCK/2) * UMSELn1:0 "1" MSPIM USART SPI USART RX TX USART RX TX SPI I/O MSPIM USART MSPIM ( ) MSPIM USART DDR_XCKn () MSPIMUSART( TXENn RXENn) DDR_XCKn MSPIM USART UBRRn Table85 Table 85. (1) UBRRn f OSC BAUD = --------------------------------------2 ( UBRRn + 1 ) f OSC UBRRn = -------------------- - 1 2BAUD Note: 1. (bps) BAUD ( bps) fOSC UBRRn UBRRnH UBRRnL (0-4095) SPI XCKn (SCK) UCPHAn UCPOLn Figure77 XCKn 176 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 UCPOLn UCPHAn Table86 Table 86. UCPOLn UCPHAn UCPOLn 0 0 1 1 UCPHAn 0 1 0 1 SPI 0 1 2 3 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) Figure 77. UCPHAn UCPOLn UCPOL=0 UCPHA=1 XCK Data setup (TXD) Data sample (RXD) XCK Data setup (TXD) Data sample (RXD) UCPOL=1 UCPHA=0 XCK Data setup (TXD) Data sample (RXD) XCK Data setup (TXD) Data sample (RXD) MSPIM 8 MSPIM USART * * 8 MSB 8 LSB 8 MSPIM USART UCSRnC UDORDn UDRn 16 UART 16 USART MSPIM USART USART () Note: XCKn (UBRRn) "0" USART UBRRn UBRRn UBRRn UBRRn "0" USART TXCn RXCn ( UDR )TXCn 177 2545A-AVR-09/03 USART ( ) r17:r16 (1) USART_Init: clr r18 out UBRRnH,r18 out UBRRnL,r18 ; XCKn sbi XCKn_DDR, XCKn ; MSPI SPI 0 ldi r18, (1< void USART_Init( unsigned int baud ) { UBRRn = 0; /* XCKn */ XCKn_DDR |= (1< 1. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" MSPI USART UCSRnB TXENn "1" TxDn UCSRnB RXENn "1" RxDn XCKn USART UDRn UDRn Note: UDRn USART 178 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 4 1 2 34 UDRn 3 1 MSPI USART UDRE (RXCn) USART R16 UDREn RXCn . (1) USART_MSPIM_Transfer: ; sbis UCSRnA, UDREn rjmp USART_MSPIM_Transfer ; out UDRn,r16 ; USART_MSPIM_Wait_RXCn: sbis UCSRnA, RXCn rjmp USART_MSPIM_Wait_RXCn ; in r16, UDRn ret C (1) unsigned char USART_Receive( void ) { /* */ while ( !( UCSRnA & (1< 1. I/O I/O "LDS" "STS" "SBRS" "SBRC" "SBR" "CBR" I/O "IN""OUT""SBIS""SBIC" "CBI" "SBI" MSPIM USART USART RXCn TXCn UDREn MSPIM (FEDOR PE) "0" MSPIM USART USART 179 2545A-AVR-09/03 USART MSPIM USART MSPIM I/O --UDRn USART MSPIM A--UCSRnA MSPIM USART MSPIM USART USART UDRn P168 "USART I/O - UDRn" * / 7 RXCn R/W 0 6 TXCn R/W 0 5 UDREn R/W 0 4 R 0 3 R 0 2 R 1 1 R 1 0 R 0 UCSRnA * 7 - RXCn: USART RXCn RXCn RXCn ( RXCIEn ) * 6 - TXCn: USART (UDRn) TXCn TXCn "1" TXCn ( TXCIEn ) * 5 - UDREn: USART UDREn(UDRn) UDREn"1" UDREn ( UDRIEn ) UDREn * 4:0 - MSPI MSPI UCSRnA "0" USART MSPIM B--UCSRnB / 7 RXCIEn R/W 0 6 TXCIEn R/W 0 5 UDRIE R/W 0 4 RXENn R/W 0 3 TXENn R/W 0 2 R 1 1 R 1 0 R 0 UCSRnB * 7 - RXCIEn: RX RXCIEn RXCn RXCIEn "1" SREG "1" UCSRnA RXCn "1" USART * 6 - TXCIEn: TX TXCIEnTXCn TXCIEn"1" SREG"1" UCSRnA TXCn "1" USART * 5 - UDRIE: USART UDRIEUDREn UDRIE"1" SREG"1" UCSRnA UDREn "1" USART 180 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * 4 - RXENn: RXENnMSPIMUSART RxDn MSPIM ( RXENn=1TXENn=0) MSPIM * 3 - TXENn: TXENnUSART TxDn ( TXENn=0) TxDn * 2:0 - MSPI MSPI UCSRnB "0" USART MSPIM C--UCSRnC / 7 UMSELn1 R/W 0 6 UMSELn0 R/W 0 5 R 0 4 R 0 3 R 0 2 UDORDn R/W 1 1 UCPHAn R/W 1 0 UCPOLn R/W 0 UCSRnC * 7:6 - UMSELn1:0: USART USART Table87.P171"USART n C - UCSRnC" USART "1" MSPIM MSPIM UDORDn UCPHAn UCPOLn Table 87. UMSELn UMSELn1 0 0 1 1 UMSELn0 0 1 0 1 USART USART ( ) SPI (MSPIM) * 5:3 - MSPI MSPI UCSRnC "0" * 2 - UDORDn: UDORDn "1" LSB MSB * 1 - UCPHAn: UCPHAn XCKn SPI * 0 - UCPOLn: UCPOLn XCKn UCPOLn UCPHAn SPI 181 2545A-AVR-09/03 USART MSPIM -- UBRRnL UBRRnH MSPI USART P172 "USART -UBRRL UBRRH" MSPIM USART AVR SPI * * * * UCPOLn SPI CPOL UCPHAn SPI CPHA UDORDn SPI DORD AVR USART MSPIM AVR SPI MSPIM USART USART MSPIM USART SPI MSPIM USART * * * * * * MSPIM USART SPI MSPIM USART MSPIM USART SPI WCOL ( ) MSPIM USART SPI (SPI2X) UBRRn MSPIM USART MSPIM USART SPI P182Table88 Table 88. MSPIM USART SPI USART_MSPIM TxDn RxDn XCKn (N/A) SPI MOSI MISO SCK SS ( ) MSPIM USART 182 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * * * * * * * * * * / 7 128 400 kHz AVR (TWI) TWI ( SCL SDA) 128 Figure 78. TWI VCC Device 1 Device 2 Device 3 ........ Device n R1 R2 SDA SCL TWI Table 89. TWI Master Slave Transmitter Receiver SCL 183 2545A-AVR-09/03 Figure78 TWI TWI "0" TWI TWI TWI AVR 400 pF 7 TWI P280"SPI " 100 kHz 400 kHz TWI Figure 79. SDA SCL Data Stable Data Stable Data Change START STOP START STOP START STOP START STOP START REPEATED START REPEATED START STOP START START REPEATED START START START STOP SCL SDA Figure 80. START REPEATED START STOP SDA SCL START STOP START REPEATED START STOP 184 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TWI 9 7 1 READ/WRITE 1 READ/WRITE 1 SCL (ACK) SDA ACK SDA STOP REPEATED START SLA+R SLA+W READ WRITE MSB 0000 000 ACK SDA Write ACK SDA Read 1111 xxx Figure 81. Addr MSB SDA Addr LSB R/W ACK SCL 1 START 2 7 8 9 TWI 9 8 1 START STOP 9 SCL SDA SDA NACK NACK MSB Figure 82. Data MSB Aggregate SDA SDA from Transmitter SDA from Receiver SCL from Master 1 SLA+R/W 2 7 Data Byte 8 9 STOP, REPEATED START or Next Data Byte Data LSB ACK START SLA+R/W STOP START STOP SCL SCL SCL SCL SCL SCL SCL TWI 185 2545A-AVR-09/03 Figure83 SLA+R/W STOP Figure 83. Addr MSB SDA Addr LSB R/W ACK Data MSB Data LSB ACK SCL 1 START 2 7 SLA+R/W 8 9 1 2 Data Byte 7 8 9 STOP 186 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TWI * * SCL SCL / SCL / Figure 84. SCL TA low TA high SCL from Master A SCL from Master B SCL Bus Line TBlow Masters Start Counting Low Period TBhigh Masters Start Counting High Period SDA SDA SDA SDA 187 2545A-AVR-09/03 Figure 85. START SDA from Master A Master A Loses Arbitration, SDAA SDA SDA from Master B SDA Line Synchronized SCL Line * * * REPEATED START STOP REPEATED START STOP SLA+R/W 188 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TWI TWI Figure86 AVR Figure 86. TWI SCL Slew-rate Control Spike Filter SDA Slew-rate Control Spike Filter Bus Interface Unit START / STOP Control Spike Suppression Bit Rate Generator Prescaler Arbitration detection Address/Data Shift Register (TWDR) Ack Bit Rate Register (TWBR) Address Match Unit Address Register (TWAR) Control Unit Status Register (TWSR) Control Register (TWCR) Address Comparator State Machine and Status control SCL SDA SCL SDAMCU TWI TWI 50 ns SCL SDA I/O TWI Unit 189 2545A-AVR-09/03 TWI SCL TWI TWSR TWBR TWI CPU TWI SCL 16 SCL TWI SCL CPU Clock frequency SCL frequency = -----------------------------------------------------------TWPS 16 + 2(TWBR) 4 * * TWBR = TWI TWPS = TWI TWI TWBR 10 SDA SCL TWI Start + SLA + R/W ( ) Note: TWDRSTART/STOP TWDR 8 TWDR (N)ACK (N)ACK TWI TWCR (N)ACK TWCR START/STOP TWI START REPEATED START STOP MCU START/STOP TWI START/STOP TWI MCU TWI TWI TWAR 7 TWAR TWI TWGCE "1" TWI TWCR MCU MCU TWI MCU TWI TWI TWI TWI TWCR TWI TWI TWINT TWI TWSR TWSR TWINT "1" SCL TWI TWINT * * * * * * * TWI START/REPEATED START TWI SLA+R/W TWI TWI TWI ( ) TWI TWI STOP REPEATED START 190 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * START STOP TWI TWI --TWBR / 7 TWBR7 R/W 0 6 TWBR6 R/W 0 5 TWBR5 R/W 0 4 TWBR4 R/W 0 3 TWBR3 R/W 0 2 TWBR2 R/W 0 1 TWBR1 R/W 0 0 TWBR0 R/W 0 TWBR * 7..0 - TWI TWBR SCL P191" " TWI --TWCR / 7 TWINT R/W 0 6 TWEA R/W 0 5 TWSTA R/W 0 4 TWSTO R/W 0 3 TWWC R 0 2 TWEN R/W 0 1 - R 0 0 TWIE R/W 0 TWCR TWCR TWI TWI START STOP TWDR TWDR TWDR * 7 - TWINT: TWI TWI TWINT SREG I TWCR TWIE MCU TWI TWINT SCL TWINT "1" "0" TWI TWINT TWAR TWSR TWDR * 6 - TWEA: TWI TWEA TWEA ACK 1. 2. TWAR TWGCE 3. / TWEA * 5 - TWSTA: TWI START CPU TWSTA TWI START STOP START START TWSTA * 4 - TWSTO: TWI STOP TWSTOTWI STOP TWSTO TWSTO 191 2545A-AVR-09/03 STOP TWI SCL SDA * 3 - TWWC: TWI TWINT TWDR TWWC TWDR * 2 - TWEN: TWI TWEN TWITWI TWEN"1" TWII/O SCL SDA TWI TWI * 1 - Res: * "0" * 0 - TWIE: TWI SREG I TWIE TWINT "1" TWI 192 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TWI --TWSR / 7 TWS7 R 1 6 TWS6 R 1 5 TWS5 R 1 4 TWS4 R 1 3 TWS3 R 1 2 - R 0 1 TWPS1 R/W 0 0 TWPS0 R/W 0 TWSR * 7..3 - TWS: TWI 5 TWI TWSR 5 2 "0" * 2 - Res: "0" * 1..0 - TWPS: TWI / Table 90. TWI TWPS1 0 0 1 1 TWPS0 0 1 0 1 1 4 16 64 P191" " TWPS1..0 TWI --TWDR / 7 TWD7 R/W 1 6 TWD6 R/W 1 5 TWD5 R/W 1 4 TWD4 R/W 1 3 TWD3 R/W 1 2 TWD2 R/W 1 1 TWD1 R/W 1 0 TWD0 R/W 1 TWDR TWDR TWDR TWI (TWINT ) TWINT TWDR TWDR MCU TWI TWDR ACK TWI CPU ACK * 7..0 - TWD: TWI TWI --TWAR / 7 TWA6 6 TWA5 5 TWA4 4 TWA3 3 TWA2 2 TWA1 1 TWA0 0 TWGCE TWAR R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 0 193 2545A-AVR-09/03 TWAR 7 TWI TWAR TWAR LSB (0x00) * 7..1 - TWA: TWI * 0 - TWGCE: TWI MCU TWI TWI -- TWAMR / 7 R/W 0 6 R/W 0 5 R/W 0 4 TWAM[6:0] 3 R/W 0 2 R/W 0 1 R/W 0 0 - TWAMR R/W 0 R 0 * 7..1 - TWAM: TWI TWAMR 7 TWAMR TWI TWAR "1" TWAR Figure87 Figure 87. TWI TWAR0 Address Bit 0 TWAMR0 Address Bit Comparator 0 Address Match Address Bit Comparator 6..1 * 0 - Res: ATmega48/88/168 "0" TWI AVR TWI START TWI TWI TWI TWCR TWI TWIESREGTWINT TWIE TWINT TWI TWINT "1" TWI TWI TWSR TWI TWCR TWCR TWDR TWI TWI 194 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure88 TWI Figure 88. TWI Application Action 1. Application writes to TWCR to initiate transmission of START 3. Check TWSR to see if START was sent. Application loads SLA+W into TWDR, and loads appropriate control signals into TWCR, makin sure that TWINT is written to one, and TWSTA is written to zero. 5. Check TWSR to see if SLA+W was sent and ACK received. Application loads data into TWDR, and loads appropriate control signals into TWCR, making sure that TWINT is written to one 7. Check TWSR to see if data was sent and ACK received. Application loads appropriate control signals to send STOP into TWCR, making sure that TWINT is written to one TWI bus START SLA+W A Data A STOP 2. TWINT set. Status code indicates START condition sent 4. TWINT set. Status code indicates SLA+W sent, ACK received TWI Hardware Action 6. TWINT set. Status code indicates data sent, ACK received Indicates TWINT set 1. TWI START TWCR TWI START TWINT TWINT "1" TWCR TWINT TWI TWINT TWI START 2. START TWCR TWINT TWCR START 3. TWSR START TWSR SLA+W TWDR TWDR TWDR SLA+W TWCR TWI SLA+W TWINT TWINT "1" TWCR TWINT TWI TWINT TWI 4. TWCR TWINT TWDR 5. TWSRACK TWSR TWDR TWCR TWI TWDR TWINT TWCR TWINT TWI TWINT TWI 6. TWCR TWINT TWSR 7. TWSR ACK TWSR TWCR TWI STOP TWINT TWINT "1" TWCR TWINT TWI TWINT TWI STOP TWINT STOP 195 2545A-AVR-09/03 TWI * * * TWI TWINT TWINT SCL TWINT TWI TWI TWDR TWI TWCR TWCR TWINT TWINT "1" TWI TWCR C 1 ldi out r16, (1< TWCR = (1< 2 wait1: in sbrs r16,TWINT rjmp wait1 TWINT TWINT START 3 in cpi ldi out ldi out r16,TWSR r16, START r16, SLA_W TWDR, r16 r16, (1< andi r16, 0xF8 brne ERROR TWI START SLA_W TWDR TWINT TWDR = SLA_W; TWCR = (1< wait2: in r16,TWCR sbrs r16,TWINT rjmp wait2 while (!(TWCR & (1< 5 in cpi ldi out ldi out r16,TWSR r16, MT_SLA_ACK r16, DATA TWDR, r16 r16, (1< andi r16, 0xF8 brne ERROR TWDR = DATA; TWCR = (1< wait3: in r16,TWCR sbrs r16,TWINT rjmp wait3 while (!(TWCR & (1< 7 in cpi ldi out r16,TWSR r16, MT_DATA_ACK r16, (1< andi r16, 0xF8 brne ERROR TWCR = (1< ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TWI 4 (MT) (MR) (ST) (SR) TWI MT TWI EEPROM MR EEPROM TWI SR S START RsREPEATED START R (SDA ) W (SDA ) A (SDA ) A (SDA ) Data8 P STOP SLA Figure90 Figure96 TWINT TWSR 0 / TWI TWI TWINT TWINT TWSRTable91 Table94 0 197 2545A-AVR-09/03 Figure89 START MT MR SLA+W MT SLA+R MR "0" Figure 89. VCC Device 1 MASTER TRANSMITTER Device 2 SLAVE RECEIVER Device 3 ........ Device n R1 R2 SDA SCL TWCR START TWCR TWINT 1 TWEA X TWSTA 1 TWSTO 0 TWWC X TWEN 1 - 0 TWIE X TWEN 2 TWSTA"1" START TWINT "1" TWINT TWI START TWINT TWSR0x08 ( Table91)MT SLA+W TWDR SLA+W TWINT TWI TWCR TWCR TWINT 1 TWEA X TWSTA 0 TWSTO 0 TWWC X TWEN 1 - 0 TWIE X SLA+W TWINT TWSR 0x18 0x20 0x38 Table91 SLA+W TWDR TWDR TWINT TWCR TWWC TWDR TWINT TWCR TWCR TWINT 1 TWEA X TWSTA 0 TWSTO 0 TWWC X TWEN 1 - 0 TWIE X STOP REPEATED START STOP TWCR TWCR TWINT 1 TWEA X TWSTA 0 TWSTO 1 TWWC X TWEN 1 - 0 TWIE X REPEATED START TWCR TWCR value TWINT 1 TWEA X TWSTA 1 TWSTO 0 TWWC X TWEN 1 - 0 TWIE X 198 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 REPEATED START ( 0x10) 2 STOP REPEATED START Table 91. (TWSR) "0" 0x08 TWCR 2 2 START START / TWDR SLA+W SLA+W SLA+R STA 0 STO 0 TWIN T 1 TWE A X 2 SLA+W ACK NOT ACK SLA+W ACK NOT ACK SLA+R 0x10 0 0 0 0 1 1 X X 0x18 SLA+W ACK ( ) TWDR TWDR TWDR 0 1 0 1 0 0 1 1 1 1 1 1 X X X X ACK NOT ACK START STOP TWSTO STOP START TWSTO ACK NOT ACK START STOP TWSTO STOP START TWSTO ACK NOT ACK START STOP TWSTO STOP START TWSTO ACK NOT ACK START STOP TWSTO STOP START TWSTO 0x20 SLA+W NOT ACK ( ) TWDR TWDR TWDR 0 1 0 1 0 0 1 1 1 1 1 1 X X X X 0x28 ACK ( ) TWDR TWDR TWDR 0 1 0 1 0 0 1 1 1 1 1 1 X X X X 0x30 NOT ACK ( ) TWDR TWDR TWDR 0 1 0 1 0 0 1 1 1 1 1 1 X X X X 0x38 SLA+W TWDR TWDR 0 1 0 0 1 1 X X 2 START 199 2545A-AVR-09/03 Figure 90. MT Successfull transmission to a slave receiver S SLA W A DATA A P $08 Next transfer started with a repeated start condition $18 $28 RS SLA W $10 Not acknowledge received after the slave address A P R $20 MR Not acknowledge received after a data byte A P $30 Arbitration lost in slave address or data byte A or A Other master continues A or A Other master continues $38 Arbitration lost and addressed as slave $38 Other master continues A $68 $78 $B0 To corresponding states in slave mode From master to slave DATA A Any number of data bytes and their associated acknowledge bits This number (contained in TWSR) corresponds to a defined state of the 2-Wire Serial Bus. The prescaler bits are zero or masked to zero From slave to master n 200 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure91 START MT MR SLA+W MT SLA+R MR "0" Figure 91. VCC Device 1 MASTER RECEIVER Device 2 SLAVE TRANSMITTER Device 3 ........ Device n R1 R2 SDA SCL TWCR START TWCR TWINT 1 TWEA X TWSTA 1 TWSTO 0 TWWC X TWEN 1 - 0 TWIE X TWEN 2 TWSTA"1" START TWINT "1" TWINT TWI START TWINT TWSR 0x08 ( Table91) MR SLA+R TWDR SLA+R TWINT TWI TWCR TWCR TWINT 1 TWEA X TWSTA 0 TWSTO 0 TWWC X TWEN 1 - 0 TWIE X SLA+R TWINT TWSR 0x38 0x40 0x48 Table92 TWDR TWINT MR NACK STOP REPEATED START STOP TWCR TWCR TWINT 1 TWEA X TWSTA 0 TWSTO 1 TWWC X TWEN 1 - 0 TWIE X REPEATED START TWCR TWCR TWINT 1 TWEA X TWSTA 1 TWSTO 0 TWWC X TWEN 1 - 0 TWIE X REPEATED START ( 0x10) 2 STOP REPEATED START Table 92. (TWSR) "0" TWCR 2 2 / TWDR STA STO TWIN T TWE A 2 201 2545A-AVR-09/03 Table 92. 0x08 START START SLA+R SLA+R SLA+W 0 0 1 X SLA+R ACK NOT ACK SLA+R ACK NOT ACK SLA+W 0x10 0 0 0 0 1 1 X X 0x38 SLA+R NOT ACK SLA+R ACK SLA+R NOT ACK TWDR TWDR 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 X X 0 1 2 START NOT ACK ACK 0x40 TWDR TWDR 0 0 0x48 TWDR TWDR TWDR 1 0 1 X X X START STOP TWSTO STOP START TWSTO 0x50 ACK NOT ACK 0 0 0 0 0 1 1 1 1 1 1 1 0 1 NOT ACK ACK 0x58 1 0 1 X X X START STOP TWSTO STOP START TWSTO 202 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 92. MR Successfull reception from a slave receiver S SLA R A DATA A DATA A P $08 Next transfer started with a repeated start condition $40 $50 $58 RS SLA R $10 Not acknowledge received after the slave address A P W $48 MT Arbitration lost in slave address or data byte A or A Other master continues A Other master continues $38 Arbitration lost and addressed as slave $38 Other master continues A $68 $78 $B0 To corresponding states in slave mode From master to slave DATA A Any number of data bytes and their associated acknowledge bits This number (contained in TWSR) corresponds to a defined state of the 2-Wire Serial Bus. The prescaler bits are zero or masked to zero From slave to master n Figure93 "0" Figure 93. VCC Device 1 SLAVE RECEIVER Device 2 MASTER TRANSMITTER Device 3 ........ Device n R1 R2 SDA SCL TWAR TWCR TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE 203 2545A-AVR-09/03 7 TWI LSB TWI 0x00 TWCR TWINT 0 TWEA 1 TWSTA 0 TWSTO 0 TWWC 0 TWEN 1 - 0 TWIE X TWENTWI TWEA() ACK TWSTA TWSTO TWAR TWCR TWI ( TWAR TWGCE ) 0 ( ) TWINT TWSR Table93 TWI ( 0x68 0x78) CPU TWEA TWI SDA " " TWEA TWI TWEA TWEA TWI TWI / CPU TWISCL TWCINT AVRTWI AVR SCL MCU TWDR 204 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 93. (TWSR) "0" 0x60 TWCR 22 SLA+W ACK SLA+R/W SLA+W ACK ACK SLA+R/W ACK SLA+W ACK SLA+W NOT ACK / TWDR TWDR TWDR STA X X STO 0 0 0 0 TWIN T 1 1 1 1 TWE A 0 1 2 NOT ACK ACK 0x68 TWDR TWDR TWDR TWDR X X 0 1 NOT ACK ACK 0x70 X X 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 NOT ACK ACK 0x78 TWDR TWDR TWDR TWDR X X X X 0 0 1 0 1 NOT ACK ACK 0x80 0 1 NOT ACK ACK 0x88 0 1 0 SLA GCA SLA GC = "1" GCA SLA GCA START SLA GC = "1" GCA START 1 0 1 1 205 2545A-AVR-09/03 Table 93. 0x90 ACK NOT ACK r X X 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 NOT ACK ACK 0x98 0 1 0 SLA GCA SLA GC = "1" GCA SLA GCA START SLA GC = "1" GCA START 1 0 1 1 0xA0 STOP START r 0 0 1 0 0 0 1 1 1 0 1 0 SLA GCA SLA GC = "1" GCA SLA GCA START SLA GC = "1" GCA START 1 0 1 1 206 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 94. Reception of the own slave address and one or more data bytes. All are acknowledged S SLA W A DATA A DATA A P or S $60 Last data byte received is not acknowledged $80 $80 $A0 A P or S $88 Arbitration lost as master and addressed as slave A $68 Reception of the general call address and one or more data bytes General Call A DATA A DATA A P or S $70 Last data byte received is not acknowledged $90 $90 $A0 A P or S $98 Arbitration lost as master and addressed as slave by general call A $78 From master to slave DATA A Any number of data bytes and their associated acknowledge bits This number (contained in TWSR) corresponds to a defined state of the 2-Wire Serial Bus. The prescaler bits are zero or masked to zero From slave to master n 207 2545A-AVR-09/03 Figure95 "0" Figure 95. VCC Device 1 SLAVE TRANSMITTER Device 2 MASTER RECEIVER Device 3 ........ Device n R1 R2 SDA SCL TWAR TWCR TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE 7 TWI LSB TWI 0x00 TWCR TWINT 0 TWEA 1 TWSTA 0 TWSTO 0 TWWC 0 TWEN 1 - 0 TWIE X TWENTWI TWEA() ACK TWSTA TWSTO TWAR TWCR TWI ( TWAR TWGCE ) "1" ( ) TWI TWSR Table94 TWI ( 0xB0) CPU TWEA TWI 0xC0 0xC8 "1" ( ACK) 0xC8 TWEA TWI TWEA TWEA TWI TWI / CPU TWISCL TWCINT AVR AVR SCL MCU TWDR 208 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 94. (TWSR) "0" 0xA8 TWCR 22 SLA+R ACK / TWDR STA X X STO 0 0 TWIN T 1 1 TWE A 0 1 2 NOT ACK ACK 0xB0 SLA+R/W SLA+R ACK TWDR ACK X X 0 0 1 1 0 1 NOT ACK ACK 0xB8 X X 0 0 1 1 0 1 NOT ACK ACK 0xC0 TWDR NOT ACK TWDR TWDR 0 0 1 0 0 0 1 1 1 0 1 0 SLA GCA SLA GC = "1" GCA SLA GCA START SLA GC = "1" GCA START TWDR 1 0 1 1 TWDR 0xC8 TWDR (TWAE = "0"); ACK TWDR TWDR 0 0 1 0 0 0 1 1 1 0 1 0 SLA GCA SLA GC = "1" GCA SLA GCA START SLA GC = "1" GCA START TWDR 1 0 1 1 TWDR 209 2545A-AVR-09/03 Figure 96. Reception of the own slave address and one or more data bytes S SLA R A DATA A DATA A P or S $A8 Arbitration lost as master and addressed as slave $B8 $C0 A $B0 Last data byte transmitted. Switched to not addressed slave (TWEA = '0') A All 1's P or S $C8 From master to slave DATA A Any number of data bytes and their associated acknowledge bits This number (contained in TWSR) corresponds to a defined state of the 2-Wire Serial Bus. The prescaler bits are zero or masked to zero From slave to master n TWI Table95 0xF8 TWINT "0" TWI 0x00 START STOP ACKSTARTSTOP TWINT TWSTO "1" TWINT TWI TWSTO (TWCR ) SDA SCL STOP Table 95. (TWSR) "0" 0xF8 TWCR 2 2 TWINT = "0" START STOP / TWDR TWDR TWDR 0 STA STO TWIN T TWE A 2 No TWCR action 0x00 1 1 X STOP TWSTO 210 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TWI TWI EEPROM 1. 2. EEPROM 3. 4. MT MR EEPROM REPEATED START REPEATED START Figure 97. TWI EEPROM Master Transmitter Master Receiver S SLA+W A ADDRESS A Rs SLA+R A DATA A P S = START Transmitted from master to slave Rs = REPEATED START Transmitted from slave to master P = STOP TWI Figure 98. VCC Device 1 MASTER TRANSMITTER Device 2 MASTER TRANSMITTER Device 3 SLAVE RECEIVER ........ Device n R1 R2 SDA SCL * * READ/WRITE SDA "0" START 211 2545A-AVR-09/03 * SLA SDA "0" SLA SR ST SLA READ/WRITE START Figure99 TWI Figure 99. START SLA Data STOP Arbitration lost in SLA Arbitration lost in Data Own Address / General Call received No 38 TWI bus will be released and not addressed slave mode will be entered A START condition will be transmitted when the bus becomes free Yes Write 68/78 Data byte will be received and NOT ACK will be returned Data byte will be received and ACK will be returned Direction Read B0 Last data byte will be transmitted and NOT ACK should be received Data byte will be transmitted and ACK should be received 212 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 AIN0 AIN1 AIN0 AIN1 ACO / 1 Figure100 Figure 100. (2) BANDGAP REFERENCE ACBG ACME ADEN ADC MULTIPLEXER OUTPUT (1) Notes: 1. P215Table97 2. P2Figure 1 P71Table40 ADC B-- ADCSRB / 7 - R 0 6 ACME R/W 0 5 - R 0 4 - R 0 3 - R 0 2 ADTS2 R/W 0 1 ADTS1 R/W 0 0 ADTS0 R/W 0 ADCSRB * 6 - ACME: "1" ADC (ADCSRA ADEN "0") ADC "0" AIN1 P216" " -- ACSR 7 ACD R/W 0 6 ACBG R/W 0 5 ACO R N/A 4 ACI R/W 0 3 ACIE R/W 0 2 ACIC R/W 0 1 ACIS1 R/W 0 0 ACIS0 R/W 0 ACSR * 7 - ACD: ACD ACD ACSR ACIE ACD * 6 - ACBG: ACBG AIN0 P43" " 213 2545A-AVR-09/03 * 5 - ACO: ACO 1-2 * 4 - ACI: ACIS1 ACIS0 ACI ACIE SREG I ACI ACI "1" * 3 - ACIE: ACIE "1" I * 2 - ACIC: ACIC T/C1 T/C1 ACIC "0" T/C1 TIMSK1 ICIE1 * 1, 0 - ACIS1, ACIS0: Table96 Table 96. ACIS1/ACIS0 ACIS1 0 0 1 1 ACIS0 0 1 0 1 ACIS1/ACIS0 ACSR 214 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ADC7..0 ADC ADC (ADCSRB ACME) ADC (ADCSRA ADEN 0) ADMUX MUX2..0 Table97 ACME ADEN AIN1 Table 97. ACME 0 1 1 1 1 1 1 1 1 1 ADEN x 1 0 0 0 0 0 0 0 0 MUX2..0 xxx xxx 000 001 010 011 100 101 110 111 AIN1 AIN1 ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7 1--DIDR1 / 7 - R 0 6 - R 0 5 - R 0 4 - R 0 3 - R 0 2 - R 0 1 AIN1D R/W 0 0 AIN0D R/W 0 DIDR1 * 7..2 - Res: ATmega48/88/168 "0" * 1, 0 - AIN1D, AIN0D: AIN1, AIN0 AIN1DAIN0D"1" AIN1/0 PIN "0" AIN1/0 AIN1/0 AIN1D AIN0D 215 2545A-AVR-09/03 * * * * * * * * * * * * * 10 0.5 LSB 2 LSB 65 - 260 s 15 kSPS 6 2 (TQFP MLF ) ADC 0 - VCC ADC 1.1V ADC ADC ATmega48/88/168 10 ADC ADC 8 A 8 0V (GND) ADC ADC ADC Figure101 ADC AVCC AVCC VCC 0.3V P223"ADC " 1.1V AVCC AREF 216 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 101. ADC CONVERSION COMPLETE IRQ 8-BIT DATA BUS ADIF ADIE 15 ADC DATA REGISTER (ADCH/ADCL) ADPS0 ADC[9:0] 0 ADC MULTIPLEXER SELECT (ADMUX) MUX2 MUX3 MUX1 REFS0 ADLAR REFS1 MUX0 ADC CTRL. & STATUS REGISTER (ADCSRA) ADPS2 ADPS1 ADSC ADEN ADFR MUX DECODER PRESCALER CHANNEL SELECTION ADIF CONVERSION LOGIC AVCC INTERNAL 1.1V REFERENCE AREF 10-BIT DAC SAMPLE & HOLD COMPARATOR + GND BANDGAP REFERENCE ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 INPUT MUX ADC MULTIPLEXER OUTPUT ADC 10 GND AREF 1 LSB ADMUX REFSn AVCC 1.1V AREF AREF ADMUX MUX ADC GND ADC ADCSRA ADEN ADC ADEN ADEN ADC ADC ADC10 ADCADCHADCL ADMUX ADLAR 8 ADCH ADCL ADCH ADCL ADC ADCL 217 2545A-AVR-09/03 ADCH ADC ADCH ADC ADCH ADCL ADC ADCHADCLADC ADC ADSC "1" ADC ADC ADCSRAADCADATE ADCSRB ADC ADTS ( ADTS ) ADC 0 Figure 102. ADC ADTS[2:0] PRESCALER START ADIF SOURCE 1 . . . . SOURCE n ADSC ADATE CLKADC CONVERSION LOGIC EDGE DETECTOR ADC ADC ADC ADC ADCSRA ADSC 1 ADC ADC ADIF ADCSRA ADSC ADSC ADSC "1" 218 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ADC Figure 103. ADC ADEN START CK Reset 7-BIT ADC PRESCALER ADPS0 ADPS1 ADPS2 ADC CLOCK SOURCE 50 kHz 200 kHz 10 200 kHz ADC 100 kHz CPU ADC ADCSRA ADPS ADCSRA ADEN ADC ADEN 1 ADEN ADCSRA ADSC ADC 13 ADC ADC (ADCSRA ADEN ) 25 ADC ADC 1.5 ADC ADC 13.5 ADC ADC ADC ADIF ADSC ( ) ADSC ADC 2 ADC 3 CPU ADSC 1 Table98 CK/128 CK/16 CK/32 CK/64 CK/2 CK/4 CK/8 219 2545A-AVR-09/03 Figure 104. ADC ( ) First Conversion Next Conversion Cycle Number 1 2 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 2 3 ADC Clock ADEN ADSC ADIF ADCH ADCL Sign and MSB of Result LSB of Result MUX and REFS Update Sample & Hold Conversion Complete MUX and REFS Update Figure 105. ADC One Conversion Next Conversion Cycle Number ADC Clock ADSC ADIF ADCH ADCL 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 Sign and MSB of Result LSB of Result Sample & Hold MUX and REFS Update Conversion Complete MUX and REFS Update Figure 106. ADC One Conversion Next Conversion Cycle Number ADC Clock Trigger Source ADATE ADIF ADCH ADCL 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 Sign and MSB of Result LSB of Result Sample & Hold MUX and REFS Update Conversion Complete Prescaler Reset Prescaler Reset 220 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 107. ADC One Conversion 11 12 13 Next Conversion 1 2 3 4 Cycle Number ADC Clock ADSC ADIF ADCH ADCL Sign and MSB of Result LSB of Result Conversion Complete Sample & Hold MUX and REFS Update Table 98. ADC & ( ) 14.5 1.5 2 ( ) 25 13 13.5 221 2545A-AVR-09/03 ADMUXMUXnREFS1:0 CPU ADC (ADCSRA ADIF ) ADSC ADSC ADC ADMUX ADMUX ADATE ADEN ADMUX ADMUX 1. ADATE ADEN "0" 2. ADC 3. ADMUX ADC ADC ADSC ADC ADSC ADC ADC ADC(VREF)ADC VREF 0x3FF VREF AVCC 1.1V AREF AVCC ADC 1.1V(VBG) AREF ADC AREF VREF AREF VREF AREF AREF AVCC 1.1V ADC ADC ADC CPUI/O ADC 1. ADC ADC 2. ADC ( ) CPU ADC 3. ADC ADCCPU ADC ADC CPU ADC ADC CPU 222 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ADC ADC ADEN Figure 108. ADC ADCn ADC ( ) (S/H) ADC10 k S/H S/H (fADC/2) ADC Figure 108. IIH ADCn 1..100 k CS/H= 14 pF IIL VCC/2 (EMI) 1. 2. Figure109 AVCC LC VCC 3. ADC CPU 4. ADC[3..0] TWI (ADC4 ADC5) ADC4 ADC5 ADC 223 2545A-AVR-09/03 Figure 109. ADC PC4 (ADC4/SDA) PC5 (ADC5/SCL) PC1 (ADC1) PC0 (ADC0) ADC7 GND AREF ADC6 AVCC PB5 ADC n ADC GND VREF 2n (LSBs) 0 2n-1 * (0x000 0x001) (0.5 LSB) 0 LSB Figure 110. Output Code Ideal ADC Actual ADC Offset Error VREF Input Voltage 224 ATmega48/88/168 2545A-AVR-09/03 100nF 10H Analog Ground Plane PC3 (ADC3) GND VCC PC2 (ADC2) ATmega48/88/168 * (0x3FE 0x3FF) ( 1.5 LSB) 0 LSB Figure 111. Output Code Gain Error Ideal ADC Actual ADC VREF Input Voltage * (INL) INL0 LSB Figure 112. (INL) Output Code * (DNL) ( ) (1 LSB) 0 LSB INL Ideal ADC Actual ADC VREF Input Voltage 225 2545A-AVR-09/03 Figure 113. (DNL) Output Code 0x3FF 1 LSB DNL 0x000 0 VREF Input Voltage * * (1 LSB) 0.5 LSB ( ) 0.5 LSB ADC (ADIF ) ADC (ADCL, ADCH) V IN 1024 ADC = -------------------------V REF V IN V REF ( P226Table99 P227Table100 ). 0x000 0x3FF 1LSB ADC -- ADMUX / 7 REFS1 R/W 0 6 REFS0 R/W 0 5 ADLAR R/W 0 4 - R 0 3 MUX3 R/W 0 2 MUX2 R/W 0 1 MUX1 R/W 0 0 MUX0 R/W 0 ADMUX * 7:6 - REFS1:0: Table99 (ADCSRA ADIF ) AREF Table 99. ADC REFS1 0 0 1 1 REFS0 0 1 0 1 AREF Vref AVCC AREF 1.1V AREF 226 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * 5 - ADLAR: ADC ADLARADCADC ADLAR ADLAR ADC P229"ADC - ADCL ADCH" * 4 - Res: ATmega48/88/168 "0" * 3:0 - MUX3:0: ADC Table100 (ADCSRA ADIF ) Table 100. MUX3..0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7 ( ) ( ) ( ) ( ) ( ) ( ) 1.1V (VBG) 0V (GND) ADC A-- ADCSRA 7 ADEN R/W 0 6 ADSC R/W 0 5 ADATE R/W 0 4 ADIF R/W 0 3 ADIE R/W 0 2 ADPS2 R/W 0 1 ADPS1 R/W 0 0 ADPS0 R/W 0 ADCSRA * 7 - ADEN: ADC ADENADC ADC ADC 227 2545A-AVR-09/03 * 6 - ADSC: ADC ADSC ADC ADSC ( ADC ADSC ADC ADSC) 25 ADC 13 ADC ADSC "1"ADSC * 5 - ADATE: ADC ADATE ADC ADC ADCSRB ADC ADTS * 4 - ADIF: ADC ADC ADIF ADIE SREG I ADC ADIF 1 ADIF ADCSRA SBI CBI * 3 - ADIE: ADC ADIE SREG I ADC * 2:0 - ADPS2:0: ADC XTAL ADC Table 101. ADC ADPS2 0 0 0 0 1 1 1 1 ADPS1 0 0 1 1 0 0 1 1 ADPS0 0 1 0 1 0 1 0 1 2 2 4 8 16 32 64 128 ADC --ADCL ADCH ADLAR = 0 15 - ADC7 7 R R 0 0 14 - ADC6 6 R R 0 0 13 - ADC5 5 R R 0 0 12 - ADC4 4 R R 0 0 11 - ADC3 3 R R 0 0 10 - ADC2 2 R R 0 0 9 ADC9 ADC1 1 R R 0 0 8 ADC8 ADC0 0 R R 0 0 ADCH ADCL 228 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ADLAR = 1 15 ADC9 ADC1 7 R R 0 0 14 ADC8 ADC0 6 R R 0 0 13 ADC7 - 5 R R 0 0 12 ADC6 - 4 R R 0 0 11 ADC5 - 3 R R 0 0 10 ADC4 - 2 R R 0 0 9 ADC3 - 1 R R 0 0 8 ADC2 - 0 R R 0 0 ADCH ADCL ADC ADCL ADC ADCH 8 ADCH ADCL ADCH ADMUX ADLAR MUXn ADLAR 1 ( ) * ADC9:0: ADC ADC P227"ADC " 229 2545A-AVR-09/03 ADC B-- ADCSRB 7 - R 0 6 ACME R/W 0 5 - R 0 4 - R 0 3 - R 0 2 ADTS2 R/W 0 1 ADTS1 R/W 0 0 ADTS0 R/W 0 ADCSRB * 7, 5:3 - Res: ADCSRB "0" * 2:0 - ADTS2:0: ADC ADCSRA ADATE ADTS ADC ADTS ADC ADCSRA ADEN 1 ADC (ADTS[2:0]=0) ADC Table 102. ADC ADTS2 0 0 0 0 1 1 1 1 ADTS1 0 0 1 1 0 0 1 1 ADTS0 0 1 0 1 0 1 0 1 0 / 0 / 0 / B / 1 / 1 0--DIDR0 / e 7 - R 0 6 - R 0 5 ADC5D R/W 0 4 ADC4D R/W 0 3 ADC3D R/W 0 2 ADC2D R/W 0 1 ADC1D R/W 0 0 ADC0D R/W 0 DIDR0 * 7:6 - Res: DIDR0 "0" * 5..0 - ADC5D..ADC0D: ADC5..0 "1" ADC PIN "0" ADC5..0 "1" ADC ADC7 ADC6 230 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 * * * * * * * * * * RESET (C HLL) ( ) debugWIRE CPU AVR debugWIRE DWEN debugWIRE RESET ( ) I/O Figure 114. debugWIRE 1.8 - 5.5V VCC dW dW(RESET) GND Figure114 debugWIRE MCU debugWIRE CKSEL debugWIRE * * * * dW/(RESET) 10k debugWIRE RESET VCC debugWIRE RESET debugWIRE AVR AVR Studio(R) BREAK BREAK 231 2545A-AVR-09/03 BREAK Flash AVR Studio(R) debugWIRE Flash debugWIRE debugWIRE (dW) (RESET) debugWIRE CPU debugWIRE I/O CPU I/O debugWIRE DWEN debugWire DWEN I/O debugWIRE debugWire --DWDR debugWire / 7 R/W 0 6 R/W 0 5 R/W 0 4 R/W 0 3 R/W 0 2 R/W 0 1 R/W 0 0 DWDR R/W 0 DWDR[7:0] DWDR MCU debugWIRE 232 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Flash ATmega48 ATmega48 (R-W-W) Boot Loader SPM Flash MCU ( ) SPM 1 * * * * * * 2 ( ) 1 Boot Loader - - 2 SPM Z "00000011" SPMCSR SPMR1 R0 Z PCPAGE Z * ( ) CPU Z R1:R0 "00000001" SPMCSR SPM Z PCWORD SPMCSR RWWSRE SPM EEPROM Z "00000101" SPMCSR SPMR1 R0 Z PCPAGE Z * CPU Flash Z SPM ZH (R31) ZL (R30) 15 Z15 Z7 7 14 Z14 Z6 6 13 Z13 Z5 5 12 Z12 Z4 4 11 Z11 Z3 3 10 Z10 Z2 2 9 Z9 Z1 1 8 Z8 Z0 0 Flash (P261Table126 ) Figure118 Boot Loader 233 2545A-AVR-09/03 LPMZ ZLSB ( Z0) Figure 115. SPM(1) BIT Z - REGISTER PCMSB PROGRAM COUNTER PCPAGE 15 ZPCMSB ZPAGEMSB 10 0 PAGEMSB PCWORD PAGE ADDRESS WITHIN THE FLASH PROGRAM MEMORY PAGE WORD ADDRESS WITHIN A PAGE PAGE INSTRUCTION WORD PCWORD[PAGEMSB:0]: 00 01 02 PAGEEND Note: 1. Figure118 P261Table126 234 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 (SPM) SPMCSR Boot Loader --SPMCSR 7 6 5 - 4 3 2 PGWRT 1 PGERS 0 SPMEN SPMCSR SPMIE RWWSB RWWSRE BLBSET / R 0 R 0 R 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 * 7 - SPMIE: SPM SPMIE I SPM SPMCSR SPMEN SPM * 6 - RWWSB:RWW RWWSB RWW ATmega48 "0" * 5 - Res: ATmega48/88/168 "0" * 4 - RWWSRE: RWW ATmega48 ATmega88/168 RWWSRE * 3 - BLBSET: Boot ATmega48 ATmega88/168 SPMCSR BLBSET SPMEN LPM ( Z Z0) P237" " * 2 - PGWRT: SPMEN SPM Flash Z R1 R0 SPM PGWRT NRWW CPU * 1 - PGERS: SPMEN SPM Z R1 R0 SPM PGERS NRWW CPU * 0 - SPMEN: SPM RWWSRE BLBSET PGWRT PGERS SPM SPMEN SPM R1:R0 Z LSB Z SPM SPM SPMEN SPMEN "10001" "01001" "00101" "00011" "00001" 235 2545A-AVR-09/03 EEPROM SPMCSR EEPROM Flash SPMCSR EECR EEWE 0x0001 Z SPMCSRBLBSET SPMEN SPMCSRCPU LPM CPU LPM CPU SPM BLBSET SPMEN BLBSET SPMEN LPM Rd 7 - 6 - 5 - 4 - 3 - 2 - 1 LB2 0 LB1 0x0000ZSPMCSRBLBSET SPMEN SPMCSR CPU LPM (FLB) P256Table119 Rd 7 FLB7 6 FLB6 5 FLB5 4 FLB4 3 FLB3 2 FLB2 1 FLB1 0 FLB0 0x0003 Z SPMCSR BLBSET SPMEN SPMCSR CPU LPM (FHB) P256Table118 SPMCSR CPU LPM Rd 7 FHB7 6 FHB6 5 FHB5 4 FHB4 3 FHB3 2 FHB2 1 FHB1 0 FHB0 (EFB) P256Table119 Rd 7 FHB7 6 FHB6 5 FHB5 4 FHB4 3 FHB3 2 FHB2 1 FHB1 0 FHB0 / "0" / "1" Flash VCC CPU Flash Flash Flash Flash Flash CPU Flash ( ) 1. AVR RESET BOD 2. AVR CPU SPMCSR Flash 236 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SPM Flash RC Flash Table108 CPU Flash Table 103. SPM Flash ( SPM ) 3.7 ms 4.5 ms 237 2545A-AVR-09/03 Boot Loader ATmega48 RWWSB "0" RWW ;- RAM Flash ; Y RAM ;Z Flash ;- ;- Boot ( Do_spm ) ; ( ) NRWW ;- r0 r1 temp1 (r16) temp2 (r17) looplo (r24) ; loophi (r25) spmcrval (r20) ; ; ;- Boot loader , .equ PAGESIZEB = PAGESIZE*2 ;PAGESIZEB .org SMALLBOOTSTART Write_page: ; ldi rcall ; ldi rcall ; ldi ldi Wrloop: ld ld ldi rcall adiw sbiw brne ; r0, Y+ r1, Y+ spmcrval, (1< ZL, low(PAGESIZEB) ZH, high(PAGESIZEB) spmcrval, (1< RWW spmcrval, (1< 238 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 subi sbci Rdloop: lpm ld cpse rjmp sbiw brne ; ; in sbrs ret ; ldi rcall rjmp Do_spm: ; in sbrc rjmp ; ; in cli ; EEPROM EECR, EEPE Wait_ee SPMCSR, spmcrval SREG ( ) SREG, temp2 Wait_ee: sbic rjmp ; out spm ; out ret SPM temp1, SPMCSR temp1, SPMEN Wait_spm spmcrval SPM temp2, SREG Wait_spm: RWW spmcrval, (1< Return: SPM 239 2545A-AVR-09/03 Boot Loader RWW ATmega88 ATmega168 ATmega88 ATmega168 Boot Loader MCU - (Read-While-Write RWW) MCU Flash Boot Loader Boot Loader ( ) Flash Boot Loader Flash Boot Loader Boot Loader Boot Loader Boot Loader * * * * * * * RWW Boot Loader ( Boot ) (1) RWW 1. Flash (P261Table126 ) Boot Loader Note: Flash Boot Loader Flash Flash Boot Loader ( Figure117) BOOTSZ P252Table109 Figure117 Flash Boot (Boot 0) P243Table105 SPM Boot Loader Boot Loader BLS BLS SPM SPM Flash BLS Boot Loader Boot Loader (Boot 1) P243Table106 CPU RWW CPU Boot Loader BOOTSZ Flash ---- - (RWW) - (NRWW) RWW NRWW P252Table110 P242Figure 117 * * RWW NRWW NRWW CPU BLS--Boot Loader RWW RWW Flash Boot Loader RWW "RWW " ( ) Boot Loader RWW---- Boot Loader RWW Flash NRWW Flash RWW RWW ( call/jmp/lpm ) Boot Loader Boot Loader NRWW RWW (SPMCSR) RWW RWWSB RWW RWWSB RWWSB P244" - SPMCSR" 240 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 NRWW---- Boot Loader RWW NRWW Boot Loader NRWW CPU Table 104. RWW Z ? RWW NRWW ? NRWW CPU ? RWW ? Figure 116. RWW NRWW Read-While-Write (RWW) Section Z-pointer Addresses RWW Section Z-pointer Addresses NRWW Section No Read-While-Write (NRWW) Section CPU is Halted During the Operation Code Located in NRWW Section Can be Read During the Operation 241 2545A-AVR-09/03 Figure 117. Program Memory BOOTSZ = '11' 0x0000 Read-While-Write Section Read-While-Write Section Program Memory BOOTSZ = '10' 0x0000 Application Flash Section Application Flash Section No Read-While-Write Section End RWW Start NRWW Application Flash Section No Read-While-Write Section End RWW Start NRWW Application Flash Section End Application Start Boot Loader Boot Loader Flash Section Flashend Program Memory BOOTSZ = '00' Boot Loader Flash Section End Application Start Boot Loader Flashend Program Memory BOOTSZ = '01' 0x0000 Read-While-Write Section Read-While-Write Section 0x0000 Application Flash Section Application Flash Section No Read-While-Write Section End RWW Start NRWW Application Flash Section End Application Start Boot Loader Boot Loader Flash Section Flashend No Read-While-Write Section End RWW, End Application Start NRWW, Start Boot Loader Boot Loader Flash Section Flashend Note: 1. P252Table109 Boot Loader Boot Loader Flash Boot Loader Boot * * * * Flash MCU MCU Boot Loader Flash MCU Flash MCU Flash Table105 Table106 Boot ( 2) SPM Flash / ( 1) LPM/SPM / 242 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 105. Boot BLB0 1 2 3 0 ( )(1) BLB01 1 0 0 SPM/LPM SPM SPM Boot Loader LPM Boot Loader Boot Loader LPM Boot Loader 1 1 0 BLB02 4 0 1 Note: 1. "1" "0" Table 106. Boot BLB1 1 2 3 1 (Boot Loader )(1) BLB11 1 0 0 SPM/LPM Boot Loader SPM Boot Loader SPM Boot Loader LPM Boot Loader Boot Loader LPM Boot Loader Boot Loader 1 1 0 BLB12 4 0 1 Note: 1. "1" "0" Boot Loader Boot Loader USART SPI Boot Boot Boot Loader MCU Boot Boot Table 107. Boot (1) BOOTRST 1 0 Note: = ( 0x0000) =Boot Loader ( P252Table109 ) 1. "1" , "0" --SPMCSR Boot Loader / 7 SPMIE 6 RWWSB 5 - 4 RWWSRE 3 BLBSET 2 PGWRT 1 PGERS 0 SPMEN SPMCSR R/W 0 R 0 R 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 243 2545A-AVR-09/03 * 7 - SPMIE: SPM SPMIE I SPM SPMCSR SPMEN SPM * 6 - RWWSB:RWW RWW ( ) RWWSB 1 RWWSB RWW RWWSRE 1 RWWSB RWWSB * 5 - Res: ATmega48/88/168 "0" * 4 - RWWSRE: RWW RWW() RWW(RWWSB"1") (SPMEN)RWW RWWSRE SPMEN"1" SPMRWW Flash (SPMEN ),RWW Flash RWWSRE Flash * 3 - BLBSET: Boot SPMEN SPM R0 Boot R1 Z SPM BLBSET SPMCSR BLBSET SPMEN LPM ( Z Z0) P249" " * 2 - PGWRT: SPMEN SPM Flash Z R1 R0 SPM PGWRT NRWW CPU * 1 - PGERS: SPMEN SPM Z R1 R0 SPM PGERS NRWW CPU * 0 - SPMEN: SPM RWWSRE BLBSET PGWRT PGERS SPM SPMEN SPM R1:R0 Z LSB Z SPM SPM SPMEN SPMEN 1 "10001" "01001" "00101" "00011" "00001" 244 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Flash Z SPM ZH (R31) ZL (R30) 15 Z15 Z7 7 14 Z14 Z6 6 13 Z13 Z5 5 12 Z12 Z4 4 11 Z11 Z3 3 10 Z10 Z2 2 9 Z9 Z1 1 8 Z8 Z0 0 Flash (P261Table126 ) Figure118 Boot Loader Z Z SPM Boot Loader Z LPM Z Z LSB ( Z0) Figure 118. SPM(1) BIT Z - REGISTER PCMSB PROGRAM COUNTER PCPAGE 15 ZPCMSB ZPAGEMSB 10 0 PAGEMSB PCWORD PAGE ADDRESS WITHIN THE FLASH PROGRAM MEMORY PAGE WORD ADDRESS WITHIN A PAGE PAGE INSTRUCTION WORD PCWORD[PAGEMSB:0]: 00 01 02 PAGEEND Note: 1. Figure118 P252Table111 Flash SPM 1 * * * * * 245 2 2545A-AVR-09/03 * ( ) Flash 1 Boot Loader - Flash 2 P251" Boot Loader " 246 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 SPM Z "X0000011" SPMCSR SPM R1 R0 Z PCPAGE Z * * ( ) RWW NRWW NRWW CPU Z R1:R0 "00000001" SPMCSR SPM Z PCWORD SPMCSR RWWSRE SPM EEPROM Z "X0000101" SPMCSR SPMR1 R0 Z PCPAGE Z * * RWW NRWW NRWW CPU SPM SPM SPMCSR SPMEN SPMCSR SPM BLS RWW P44" " Boot 11 Boot Loader Boot Loader Boot Loader Boot Loader Boot 11 Boot Loader ( ) RWW RWW SPMCSR RWWSB P44" " BLS RWW RWWSRE 1 RWWSB P251" Boot Loader " BLS RWW 247 2545A-AVR-09/03 SPM Boot Loader Boot Loader R0 "X0001001"SPMCSR SPM Boot Loader MCU Boot Loader R0 7 1 6 1 5 BLB12 4 BLB11 3 BLB02 2 BLB01 1 1 0 1 Boot Loader Flash Table105 Table106 R0 5..2 0 SPMCSR BLBSET SPMEN SPM Boot Z Z 0x0001( lOck ) R0 7 6 1 0 "1" Flash EEPROM SPMCSR EEPROM Flash SPMCSR EECR EEWE 0x0001 Z SPMCSRBLBSET SPMEN SPMCSRCPU LPM CPU LPM CPU SPM BLBSET SPMEN BLBSET SPMEN LPM Rd 7 - 6 - 5 BLB12 4 BLB11 3 BLB02 2 BLB01 1 LB2 0 LB1 0x0000ZSPMCSRBLBSET SPMEN SPMCSR CPU LPM (FLB) P256Table119 Rd 7 FLB7 6 FLB6 5 FLB5 4 FLB4 3 FLB3 2 FLB2 1 FLB1 0 FLB0 0x0003 Z SPMCSR BLBSET SPMEN SPMCSR CPU LPM (FHB) P256Table120 Rd 7 FHB7 6 FHB6 5 FHB5 4 FHB4 3 FHB3 2 FHB2 1 FHB1 0 FHB0 0x0002 Z SPMCSR BLBSET SPMEN SPMCSR CPU LPM (EFB) P256Table118 Rd 7 - 6 - 5 - 4 - 3 EFB3 2 EFB2 1 EFB1 0 EFB0 "0" "1" Flash VCC CPU Flash Flash Flash 248 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Flash Flash CPU Flash ( ) 1. Boot Loader Boot Loader Boot Loader 2. AVR RESET BOD 3. AVR CPU SPMCSR Flash SPM Flash RC Flash Table108 CPU Flash Table 108. SPM Flash ( SPM ) 3.7 ms 4.5 ms 249 2545A-AVR-09/03 Boot Loader ;- RAM Flash ; Y RAM ;Z Flash ;- ;- Boot ( Do_spm ) ; ( ) NRWW ;- r0 r1 temp1 (r16) temp2 (r17) looplo (r24) ; loophi (r25) spmcrval (r20) ; ; ;- Boot loader , .equ PAGESIZEB = PAGESIZE*2 ;PAGESIZEB .org SMALLBOOTSTART Write_page: ; ldi spmcrval, (1< ;PAGESIZEB<=256 subi ; execute Page Write subi ZL, low(PAGESIZEB) ; sbci ZH, high(PAGESIZEB) ;PAGESIZEB<=256 ldi spmcrval, (1< ;PAGESIZEB<=256 subi ; RWW ; RWW Return: in temp1, SPMCSR sbrs temp1, RWWSB ; RWWSB "1" RWW ret ; RWW 250 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ldi spmcrval, (1< 2545A-AVR-09/03 ATmega88 Boot Loader Table109 Table111 Table 109. ATmega88 Boot (1) Boot 128 256 512 1024 Boot Loader Flash 0xF80 0xFFF 0xF00 0xFFF 0xE00 0xFFF 0xC00 0xFFF Boot ( Boot Loader ) 0xF80 0xF00 0xE00 0xC00 BOOTSZ1 1 1 0 0 BOOTSZ0 1 0 1 0 4 8 16 32 Flash 0x000 0xF7F 0x000 0xEFF 0x000 0xDFF 0x000 0xBFF 0xF7F 0xEFF 0xDFF 0xBFF Note: BOOTSZ Figure117. Table 110. ATmega88 RWW (1) Flash - (RWW) - (NRWW) 96 32 0x000 - 0xBFF 0xC00 - 0xFFF " P242"NRWW - - " P241"RWW - - Table 111. ATmega88 Figure118 Z (1) PCMSB PAGEMSB ZPCMSB ZPAGEMSB PCPAGE PCWORD Note: PC[11:5] PC[4:0] 11 4 Z12 Z5 Z12:Z6 Z5:Z1 Z ( 12 PC[11:0]) ( 32 5 PC [4:0]). Z PCMSB Z0 ZPCMSB PCMSB + 1 Z PAGEMSB Z0 ZPAGEMSB PAGEMSB + 1 ( 0) 1. Z15:Z13 Z0 SPM "0" LPM Z P246" Flash" 252 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ATmega168 Boot Loader Table112 Table114 Table 112. ATmega168 Boot (1) Boot 128 256 512 1024 Boot Loader Flash 0x1F80 0x1FFF 0x1F00 0x1FFF 0x1E00 0x1FFF 0x1C00 0x1FFF Boot ( Boot Loader ) 0x1F80 0x1F00 0x1E00 0x1C00 BOOTSZ1 1 1 0 0 BOOTSZ0 1 0 1 0 4 8 16 32 Flash 0x0000 0x1F7F 0x0000 0x1EFF 0x0000 0x1DFF 0x0000 0x1BFF 0x1F7F 0x1EFF 0x1DFF 0x1BFF Note: BOOTSZ Figure117 Table 113. ATmega168 RWW (1) Flash - (RWW) - (NRWW) 112 16 0x0000 - 0x1BFF 0x1C00 - 0x1FFF - " P242"NRWW - - " P241"RWW - Table 114. ATmega168 Figure118 Z (1) PCMSB PAGEMSB ZPCMSB ZPAGEMSB PCPAGE PCWORD Note: PC[12:6] PC[5:0] 12 5 Z13 Z6 Z13:Z7 Z6:Z1 Z ( 12 PC[11:0]) ( 32 5 PC [4:0]). Z PCMSB Z0 ZPCMSB PCMSB + 1 Z PAGEMSB Z0 ZPAGEMSB PAGEMSB + 1 ( 0) 1. Z15:Z14 Z0 SPM "0" LPM Z P246" Flash" 253 2545A-AVR-09/03 ATmega88/168 6 ("0") ("1") Table116 "1" ATmega48 Boot Loader SPMEN ("0")SPM Flash SPM Table 115. (1) 7 6 BLB12 BLB11 BLB02 BLB01 LB2 LB1 Note: 5 4 3 2 1 0 - - Boot Boot Boot Boot 1 ( ) 1 ( ) 1 ( ) 1 ( ) 1 ( ) 1 ( ) 1 ( ) 1 ( ) 1. "1" "0" Table 116. (1)(1) LB 1 2 3 Notes: Notes: LB2 1 1 0 LB1 1 0 0 Flash EEPROM (1) Flash EEPROM (1) 1. LB1 LB2 Boot 1. "1" , "0" 254 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 117. ATmega88/168 (1)(1) BLB0 1 2 BLB02 1 1 BLB01 1 0 SPM LPM SPM SPM Boot Loader LPM Boot Loader Boot Loader LPM Boot Loader SPM/LPM Boot Loader SPM Boot Loader SPM Boot Loader LPM Boot Loader Boot Loader LPM Boot Loader Boot Loader 3 0 0 4 BLB1 1 2 0 BLB12 1 1 1 BLB11 1 0 3 0 0 4 Notes: 0 1 1. LB1 LB2 Boot 2. "1" , "0" 255 2545A-AVR-09/03 ATmega48/88/168 Table118 - Table120 "0" Table 118. mega48 - - - - - - - SPMEN Notes: 7 6 5 4 3 2 1 0 - - - - - - - SPM 1 1 1 1 1 1 1 1 ( ) 1. BODLEVEL P39Table21 2. RSTDISBL P69" C " Table 119. mega88/168 - - - - - BOOTSZ1 BOOTSZ0 BOOTRST Note: 7 6 5 4 3 2 1 0 - - - - - Boot ( Table 113 ) Boot ( Table 113 ) 1 1 1 1 1 0 ( )(1) 0 ( )(1) 1 ( ) 1. BOOTSZ1..0 Boot P259Table122 Table 120. RSTDISBL DWEN SPIEN (2) (1) 7 6 5 4 3 2 1 0 EEPROM 1 ( ) 1 ( ) 0 ( SPI ) 1 ( ) 1 ( )EEPROM 1 ( ) 1 ( ) 1 ( ) WDTON(3) EESAVE BODLEVEL2(4) BODLEVEL1 BODLEVEL0 Notes: (4) (4) BOD BOD BOD 1. RSTDISBL P69" C " 256 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 2. SPIEN 3. P44" - WDTCSR" 4. P39Table21 BODLEVEL Table 121. CKDIV8(4) CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 Note: (3) 7 6 5 4 3 2 1 0 8 0 ( ) 1 ( ) 1 ( )(1) 0 ( )(1) 0 ( )(2) 0 ( )(2) 1 ( )(2) 0 ( )(2) 1. SUT1..0 P28Table12 2. CKSEL3..0RC8 MHz P27Table11 3. CKOUT PORTB0 P31" " 4. P31" " 1(LB1) EESAVE 257 2545A-AVR-09/03 Atmel 1. 0x000: 0x1E ( Atmel ) 2. 0x001: 0x92 ( 4KB Flash ) 3. 0x002: 0x05 ( 0x001 0x92 ATmega48 ) ATmega48 ATmega88 1. 0x000: 0x1E ( Atmel ) 2. 0x001: 0x93 ( 8KB Flash ) 3. 0x002: 0x0A ( 0x001 0x93 ATmega88 ) ATmega168 1. 0x000: 0x1E ( Atmel ) 2. 0x001: 0x94 ( 16KB Flash ) 3. 0x002: 0x06 ( 0x001 0x94 ATmega168 ) ATmega48/88/168 RC 0x000 OSCCAL RC 258 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ATmega48/88/168 Flash EEPROM 250 ns ATmega48/88/168 Figure119 Table122 XA1/XA0 XTAL1 Table124 WR OE Table125 Figure 119. +5V RDY/BSY OE WR BS1 XA0 XA1 PAGEL +12 V BS2 PD1 PD2 PD3 PD4 PD5 PD6 VCC +5V AVCC PC[1:0]:PB[5:0] DATA PD7 RESET PC2 XTAL1 GND Table 122. RDY/BSY OE WR BS1 XA0 XA1 PAGEL BS2 DATA PD1 PD2 PD3 PD4 PD5 PD6 PD7 PC2 {PC[1:0]: PB[5:0]} I/O O I I I I I I I I/O 0: , 1: ( ). ( ). 1("0" , "1" ). XTAL 0 XTAL 1 EEPROM 2("0" , "1" ) (OE ) 259 2545A-AVR-09/03 Table 123. PAGEL XA1 XA0 BS1 Prog_enable[3] Prog_enable[2] Prog_enable[1] Prog_enable[0] 0 0 0 0 Table 124. XA1 XA0 XA1 0 0 1 1 XA0 0 1 0 1 XTAL1 Flash EEPROM ( BS1 ) ( BS1 ) 260 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 125. 1000 0000 0100 0000 0010 0000 0001 0000 0001 0001 0000 1000 0000 0100 0000 0010 0000 0011 Flash EEPROM Flash EEPROM Table 126. Flash ATmega48 ATmega88 ATmega168 Flash 2K (4K ) 4K (8K ) 8K (16K ) 32 32 64 PCWORD PC[4:0] PC[4:0] PC[5:0] 64 128 128 PCPAG E PC[10:5] PC[11:5] PC[12:6] PCMSB 10 11 12 Table 127. EEPROM ATmega48 ATmega88 ATmega168 EEPROM 256 512 512 4 4 4 PCWORD EEA[1:0] EEA[1:0] EEA[1:0] 64 128 128 PCPAG E EEA[7:2] EEA[8:2] EEA[8:2] EEAMSB 7 8 8 Table 128. MOSI MISO SCK PB3 PB4 PB5 I/O I O I t 261 2545A-AVR-09/03 1. VCC GND 4.5 - 5.5V 2. RESET XTAL1 6 3. P260Table123 Prog_enable "0000" 100 ns 4. RESET 11.5 - 12.5V RESET +12V 100 ns Prog_enable 5. 50 s * * * 0xFF Flash EEPROM( EESAVE ) Flash EEPROM 256 Flash EEPROM(1) Flash / EEPROM Note: 1. EESAVE EEPRPOM " " 1. XA1 XA0 10 2. BS1 0 3. DATA "1000 0000" 4. XTAL1 5. WR RDY/BSY 6. RDY/BSY Flash Flash P261Table126 Flash Flash A. " Flash" 1. XA1 XA0 "10" 2. BS1 "0" 3. DATA "0001 0000" Flash 4. XTAL1 B. 1. XA1 XA0 "00" 2. BS1 "0" 3. DATA (0x00 - 0xFF) 4. XTAL1 C. 1. XA1 XA0 "01" 2. DATA (0x00 - 0xFF) 262 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 3. XTAL1 D. 1. BS1 "1" 2. XA1 XA0 "01" 3. DATA (0x00 - 0xFF) 4. XTAL1 E. 1. BS1 "1" 2. PAGEL ( Figure121 ) F. B E FLASH P264Figure 120 8 ( < 256) G. 1. XA1 XA0 "00" 2. BS1 "1" 3. DATA (0x00 - 0xFF) 4. XTAL1 H. 1. WR RDY/BSY 2. RDY/BSY ( Figure121 ) I. B H Flash J. 1. 1. XA1 XA0 "10" 2. DATA "0000 0000" XTAL1 263 2545A-AVR-09/03 Figure 120. Flash (1) PCMSB PROGRAM COUNTER PCPAGE PAGEMSB PCWORD PAGE ADDRESS WITHIN THE FLASH PROGRAM MEMORY PAGE WORD ADDRESS WITHIN A PAGE PAGE INSTRUCTION WORD PCWORD[PAGEMSB:0]: 00 01 02 PAGEEND Note: 1. PCPAGE PCWORD P261Table126 Figure 121. Flash (1) F A DATA 0x10 B ADDR. LOW C DATA LOW D DATA HIGH E XX B ADDR. LOW C DATA LOW D DATA HIGH E XX G ADDR. HIGH H XX XA1 XA0 BS1 XTAL1 WR RDY/BSY RESET +12V OE PAGEL BS2 Note: 1. "XX" Flash EEPROM P261Table127 EEPROM EEPROM EEPROM ( P263" Flash " ) 1. A "0001 0001" 2. G (0x00 - 0xFF) 3. B (0x00 - 0xFF) 4. C (0x00 - 0xFF) 5. E ( PAGEL ) K 3 5 L EEPROM 264 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 1. BS 0 2. WR EEPROM RDY/BSY 3. RDY/BSY ( Figure122 ) Figure 122. EEPROM K A DATA 0x11 G ADDR. HIGH B ADDR. LOW C DATA E XX B ADDR. LOW C DATA E XX L XA1 XA0 BS1 XTAL1 WR RDY/BSY RESET +12V OE PAGEL BS2 Flash Flash ( P263" Flash " ) 1. A "0000 0010" 2. G (0x00 - 0xFF) 3. B (0x00 - 0xFF) 4. OE "0" BS1 "0" DATA Flash 5. BS "1" DATA Flash 6. OE "1" EEPROM ( P263" Flash " ) 1. A "0000 0011" 2. G (0x00 - 0xFF) 3. B (0x00 - 0xFF) 4. OE "0" BS1 "0" DATA EEPROM 5. OE "1" 265 2545A-AVR-09/03 ( P263" Flash " ) 1. A "0100 0000" 2. C "0" 3. WR RDY/BSY ( P263" Flash " ) 1. A "0100 0000" 2. C "0" 3. BS1 "1" BS2 "0" 4. WR RDY/BSY 5. BS1 "0" ( P263" Flash " ) 1. 1. A "0100 0000" 2. 2. C "0" 3. 3. BS1 "1" BS2 "1" 4. 4. WR RDY/BSY 5. 5. BS2 "0" Figure 123. Write Fuse Low byte A DATA 0x40 Write Fuse high byte A C DATA XX Write Extended Fuse byte A 0x40 C DATA XX C DATA XX 0x40 XA1 XA0 BS1 BS2 XTAL1 WR RDY/BSY RESET +12V OE PAGEL ( P263" Flash " ) 1. A "0010 0000" 2. C. n "0" LB 3(LB1 LB2 ) 3. WR RDY/BSY ( P263" Flash " ) 1. A "0000 0100" 2. OE BS2 BS1 "0" DATA ("0" ) 3. OE"0" BS2BS1"1" DATA("0") 266 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 4. OE BS1 "0" BS2 "1" DATA ("0" ) 5. OE "0" BS2 "0" BS1 "1" DATA ("0" ) 6. OE "1" Figure 124. BS1 BS2 Fuse Low Byte 0 0 Extended Fuse Byte BS2 Lock Bits 0 1 1 DATA Fuse High Byte BS2 1 BS1 ( P263" Flash " ) 1. A "0000 1000" 2. B 0x00 - 0x02 3. OE "0" BS1 "1" DATA 4. OE "1" ( P263" Flash " ) 1. A "0000 1000" 2. B 0x00 3. OE "0" BS1 "1" DATA 4. OE "1" Figure 125. tXLWL XTAL1 tDVXH Data & Contol (DATA, XA0/1, BS1, BS2) tBVPH PAGEL WR RDY/BSY tWLRH tPHPL tWLWH tPLWL WLRL tXHXL tXLDX tPLBX t BVWL tWLBX 267 2545A-AVR-09/03 Figure 126. (1) LOAD ADDRESS (LOW BYTE) LOAD DATA (LOW BYTE) t XLXH LOAD DATA LOAD DATA (HIGH BYTE) tXLPH tPLXH LOAD ADDRESS (LOW BYTE) XTAL1 BS1 PAGEL DATA ADDR0 (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR1 (Low Byte) XA0 XA1 Note: 1. Figure125 (tDVXH tXHXL tXLDX) Figure 127. ( )(1) LOAD ADDRESS (LOW BYTE) tXLOL READ DATA (LOW BYTE) READ DATA (HIGH BYTE) LOAD ADDRESS (LOW BYTE) XTAL1 tBVDV BS1 tOLDV OE tOHDZ DATA ADDR0 (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR1 (Low Byte) XA0 XA1 Note: 1. Figure125 ( tDVXH tXHXL tXLDX) Table 129. VCC = 5V 10% VPP IPP tDVXH tXLXH tXHXL tXLDX tXLWL tXLPH XTAL1 XTAL1 XTAL1 XTAL1 XTAL1 XTAL1 WR XTAL1 PAGEL 67 200 150 67 0 0 11.5 12.5 250 V A ns ns ns ns ns ns 268 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 129. VCC = 5V 10% (Continued) tPLXH tBVPH tPHPL tPLBX tWLBX tPLWL tBVWL tWLWH tWLRL tWLRH tWLRH_CE tXLOL tBVDV tOLDV tOHDZ Notes: 1. 2. PAGEL XTAL1 PAGEL BS1 PAGEL PAGEL BS1 WR BS2/1 PAGEL WR BS1 WR WR WR RDY/BSY WR RDY/BSY (1) WR RDY/BSY XTAL1 OE BS1 DATA OE DATA OE DATA Flash EEPROM tWLRH tWLRH_CE (2) 150 67 150 67 67 67 67 150 0 3.7 7.5 0 0 ns ns ns ns ns ns ns ns 1 4.5 9 s ms ms ns 250 250 250 ns ns ns RESET SPI Flash EEPROM SCK MOSI( ) MISO( ) RESET P261Table128 SPI SPI SPI Figure 128. (1) +1.8 - 5.5V VCC +1.8 - 5.5V(2) MOSI MISO SCK XTAL1 AVCC RESET GND Notes: 1. XTAL1 2. VCC - 0.3V < AVCC < VCC + 0.3V AVCC 1.8 - 5.5V 269 2545A-AVR-09/03 EEPROM MCU EEPROM 0xFF CKSEL (SCK) fck < 12 MHz 2 CPU fck >= 12 MHz 3 CPU > fck < 12 MHz 2 CPU fck >= 12 MHz 3 CPU > 270 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ATmega48/88/168 SCK ATmega48/88/168 SCK Figure129 ATmega48/88/168 ( Table131 4 ) 1. RESET SCK "0" VCC GND SCK SCK RESET 2 CPU 2. 20 ms MOSI 3. (0x53) 4 0x53 RESET 4. Flash 6 LSB 8 tWD_FLASH ( Table130.) Flash 5. EEPROM EEPROM tWD_EEPROM ( Table130.) 0xFF 6. MISO 7. RESET 8. ( ) RESET "1" VCC Flash Flash 0xFF Flash 0xFF 0xFF tWD_FLASH 0xFF 0xFF tWD_FLASH Table130 EEPROM 0xFF 0xFF 0xFF 0xFF EEPROM 0xFF tWD_EEPROM tWD_EEPROM Table130 Table 130. Flash EEPROM tWD_FLASH tWD_EEPROM tWD_ERASE 4.5 ms 3.6 ms 9.0 ms EEPROM 271 2545A-AVR-09/03 Figure 129. SERIAL DATA INPUT (MOSI) SERIAL DATA OUTPUT (MISO) SERIAL CLOCK INPUT (SCK) SAMPLE MSB LSB MSB LSB Table 131. 1 1010 1100 1010 1100 0010 H000 0100 H000 2 0101 0011 100x xxxx 000a aaaa 000x xxxx 3 xxxx xxxx xxxx xxxx bbbb bbbb xxbb bbbb 4 xxxx xxxx xxxx xxxx oooo oooo iiii iiii RESET EEPROM Flash a:b H( ) o b H( ) i a:b EEPROM a:b o EEPROM a:b o i EEPROM EEPROM a:b EEPROM "0" "1" P254Table115 "0" P254Table115 b o "0" "1" Table XXX on page XXX "0" "1" P221Table98 EEPROM EEPROM EEPROM ( ) EEPROM( ) 0100 1100 1010 0000 1100 0000 1100 0001 000a aaaa 000x xxaa 000x xxaa 0000 0000 bbxx xxxx bbbb bbbb bbbb bbbb 0000 00bb xxxx xxxx oooo oooo iiii iiii iiii iiii 1100 0010 0101 1000 1010 1100 0011 0000 1010 1100 1010 1100 1010 1100 0101 0000 00xx xxaa 0000 0000 111x xxxx 000x xxxx 1010 0000 1010 1000 1010 0100 0000 0000 bbbb bb00 xxxx xxxx xxxx xxxx xxxx xxbb xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxoo oooo 11ii iiii oooo oooo iiii iiii iiii iiii xxxx xxii oooo oooo P256Table118 "0" "1" Read Fuse bits. "0" = programmed, "1" = unprogrammed. See "0" "1" Table XXX on page XXX 272 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Table 131. (Continued) RDY/BSY Note: 1 0101 1000 0101 0000 0011 1000 1111 0000 2 0000 1000 0000 1000 000x xxxx 0000 0000 3 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx 4 oooo oooo oooo oooo oooo oooo xxxx xxxo "0" "1" P221Table98 "0" "1" P256Table118 o = "1" "0" a = b = H = 0 - 1 - o = i = x = SPI SPI P280 "SPI " 273 2545A-AVR-09/03 * ........................................................ -55C +125C ........................................................ -65C +150C RESET............ -0.5V VCC+0.5V RESET .................................. -0.5V +13.0V .................................................................... 6.0V I/O ......................................... 40.0 mA *NOTICE: " " VCC GND ................................ 200.0 mA VIL VIL1 VIL2 VIH VIH1 VIH2 VOL VOL1 VOH VOH1 IIL IIH RRST RPU TA = -40C-85C, VCC = 1.8V-5.5V ( ) XTAL1 RESET XTAL1 RESET XTAL1 RESET XTAL1 RESET (3) PC6 (3)PC6 Output High Voltage(4), Except PC6 (4) PC6 I/O I/O Reset I/O VCC = 1.8V - 2.4V VCC = 2.4V - 5.5V VCC = 1.8V - 5.5V VCC = 1.8V - 5.5V VCC = 1.8V - 2.4V VCC = 2.4V - 5.5V VCC = 1.8V - 2.4V VCC = 2.4V - 5.5V VCC = 1.8V - 5.5V IOL = 10mA, VCC = 5V IOL = 5mA, VCC = 3V TBD IOH = -20mA, VCC = 5V IOH = -10mA, VCC = 3V TBD VCC = 5.5V, pin low (absolute value) VCC = 5.5V, pin high (absolute value) 30 20 4.2 2.3 TBD 1 1 60 50 -0.5 -0.5 -0.5 -0.5 0.7VCC(2) 0.6VCC(2) 0.8VCC(2) 0.7VCC(2) 0.9VCC(2) 0.2VCC(1) 0.3VCC(1) 0.1VCC(1) 0.1VCC(1) VCC + 0.5 VCC + 0.5 VCC + 0.5 VCC + 0.5 VCC + 0.5 0.7 0.5 TBD V V V V V V V V V V A A k k 274 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 TA = -40C-85C, VCC = 1.8V-5.5V ( ) (Continued) 1MHzVCC = 2V (ATmega48/88/168V) 4MHzVCC = 3V (ATmega48/88/168L) 8MHzVCC = 5V (ATmega48/88/168) 1MHz VCC = 2V (ATmega48/88/168V) 4MHzVCC = 3V (ATmega48/88/168L) 8MHzVCC = 5V (ATmega48/88/168) VACIO IACLK tACID Notes: WDT VCC = 3V WDT VCC = 3V VCC = 5V Vin = VCC/2 VCC = 5V Vin = VCC/2 VCC = 2.7V VCC = 4.0V -50 750 500 <8 <1 <10 0.25 0.55 3.5 12 0.5 1.5 5.5 15 2 40 50 mA mA mA mA mA mA A A mV nA ns ICC 1. " " 2. " " 3. ()I/O(20 mA CC = 5V10 mAVCC = 3V) V ATmega48 1] C0 - C5 IOL 70 mA 2] C6 D0 - D4 IOL 70 mA 3] B0 - B7 D5 - D7 IOL 70 mA ATmega88/168 1] C0 - C5 IOL 100 mA 2] C6D0 - D4 IOL 100 mA 3] B0 - B7 D5 - D7 IOL 100 mA IOL VOL 4. ( ) I/O (20 mA CC = 5V 10 mAVCC = 3V) V ATmega48 1] C0 - C5 IOH 70 mA 2] C6 D0 - D4 IOH 70 mA 3] B0 - B7 D5 - D7 IOH 70 mA. ATmega88/168 1] C0 - C5 IOH 100 mA 2] C6D0 - D4 IOH 100 mA 3] B0 - B7 D5 - D7 IOH 100 mA. IOH VOH 5. AVR 275 2545A-AVR-09/03 Figure 130. V IH1 V IL1 Table 132. VCC=1.8-5.5V 1/tCLCL tCLCL tCHCX tCLCX tCLCH tCHCL 0 500 200 200 2.0 2.0 2 2 VCC=2.7-5.5V 0 125 50 50 1.6 1.6 2 8 VCC=4.5-5.5V 0 62.5 25 25 0.5 0.5 2 16 MHz ns ns ns s s % tCLCL Note: AVR Figure 131. ATmega48V/88V/168V VCC 10 MHz Safe Operating Area 4 MHz 1.8V 2.7V 5.5V 276 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 132. ATmega48/88/168 VCC 20 MHz 10 MHz Safe Operating Area 2.7V 4.5V 5.5V 277 2545A-AVR-09/03 Table133 ATmega48/88/168 Figure133 Table 133. VIL VIH Vhys tr(1) tof(1) tSP(1) Ii Ci(1) fSCL (1) SDA SCL VIHmin VILmax I/O I/O SCL fCK(4) -0.5 0.7 VCC 0.05 VCC (2) 0.3 VCC VCC + 0.5 - 0.4 300 250 50 (2) V V V V ns ns ns A pF kHz s s s s s s s s s s ns ns s s s s VOL(1) 3 mA (3) 0 20 + 0.1Cb(3)(2) 10 pF < Cb < 400 pF 20 + 0.1Cb 0 -10 - (3)(2) 0.1VCC < Vi < 0.9VCC > max(16fSCL, 250kHz) fSCL 100 kHz (5) 10 10 400 1000ns -----------------Cb 300ns --------------Cb - - - - - - - - 3.45 0.9 - - - - - - 0 V CC - 0,4V ----------------------------3mA V CC - 0,4V ----------------------------3mA 4.0 0.6 4.7 1.3 4.0 0.6 4.7 0.6 0 0 250 100 4.0 0.6 4.7 1.3 Rp fSCL > 100 kHz fSCL 100 kHz fSCL > 100 kHz fSCL 100 kHz (6) (7) tHD;STA tLOW tHIGH tSU;STA tHD;DAT tSU;DAT tSU;STO tBUF Notes: 1. 2. 3. 4. (repeated) START SCL SCL repeated START STOP STOP START fSCL > 100 kHz fSCL 100 kHz fSCL > 100 kHz fSCL 100 kHz fSCL > 100 kHz fSCL 100 kHz fSCL > 100 kHz fSCL 100 kHz fSCL > 100 kHz fSCL 100 kHz fSCL > 100 kHz fSCL 100 kHz fSCL > 100 kHz ATmega48/88/168 100% fSCL > 100 kHz Cb pF fCK CPU 278 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 5. ATmega48/88/168 fSCL 6. ATmega48/88/168 (1/fSCL - 2/fCK) fSCL = 100 kHz fCK 6 MHz 7. ATmega48/88/168 (1/fSCL - 2/fCK) fCK = 8 MHz fSCL > 308 kHz ATmega48/88/168 (400 kHz) tLOW Figure 133. tof tLOW SCL tSU;STA SDA tHD;STA tHD;DAT tSU;DAT tSU;STO tHIGH tLOW tr tBUF SPI Figure134 Figure135 Table 134. SPI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Note: SCK SCK SCK SCK SCK SS SCK SCK (1) SCK SCK SS SS 20 10 10 tck 15 4 * tck 2 * tck 1600 Table71 50% 3.6 10 10 0.5 * tsck 10 10 15 ns SS SCK 20 1. SPI SCK fCK < 12 MHz - 2 tCLCL fCK > 12 MHz - 3 tCLCL 2. AVR 279 2545A-AVR-09/03 Figure 134. SPI ( ) SS 6 1 SCK (CPOL = 0) 2 2 SCK (CPOL = 1) 4 5 3 MISO (Data Input) MSB 7 ... LSB 8 MOSI (Data Output) MSB ... LSB Figure 135. SPI ( ) SS 9 10 16 SCK (CPOL = 0) 11 11 SCK (CPOL = 1) 13 14 12 MOSI (Data Input) MSB 15 ... LSB 17 MISO (Data Output) MSB ... LSB X 280 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ADC -- Table 135. ADC VREF = 4V, VCC = 4V, ADC = 200 kHz VREF = 4V, VCC = 4V, ADC = 1 MHz ( INL DNL ) VREF = 4V, VCC = 4V, ADC = 200 kHz VREF = 4V, VCC = 4V, ADC = 1 MHz (INL) (DNL) AVCC VREF VIN VINT RREF RAIN Note: 1.0 VREF = 4V, VCC = 4V, ADC = 200 kHz VREF = 4V, VCC = 4V, ADC = 200 kHz VREF = 4V, VCC = 4V, ADC = 200 kHz VREF = 4V, VCC = 4V, ADC = 200 kHz 13 50 VCC - 0.3 1.0 GND 38.5 1.1 32 100 1.2 10 2 4.5 2.5 Bits LSB LSB 2 LSB 4.5 LSB 0.5 0.25 2 2 260 1000 VCC + 0.3 AVCC VREF LSB LSB LSB LSB s kHz V V V kHz V k M AVR 281 2545A-AVR-09/03 ATmega48/88/168 - AVR I/O I/O I/O I/O CL*VCC*f CL = VCC = f = I/O Figure 136. (0.1 - 1.0 MHz) ACTIVE SUPPLY CURRENT vs. FREQUENCY 0.1 - 1.0 MHz 1.2 1 5.5 V 5.0 V 0.8 4.5 V 4.0 V 3.3 V ICC (mA) 0.6 0.4 2.7 V 1.8 V 0.2 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequency (MHz) 282 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 137. (1 - 20 MHz) ACTIVE SUPPLY CURRENT vs. FREQUENCY 1 - 24 MHz 18 16 14 12 5.5V 5.0V 4.5V ICC (mA) 10 8 6 4.0V 3.3V 4 2 0 0 4 8 2.7V 1.8V 12 16 20 24 Frequency (MHz) Figure 138. VCC ( RC 8 MHz) ACTIVE SUPPLY CURRENT vs. VCC INTERNAL RC OSCILLATOR, 8 MHz 7 6 5 25 C -40 C 85 C ICC (mA) 4 3 2 1 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 283 2545A-AVR-09/03 Figure 139. VCC ( RC CKDIV8 1 MHz) ACTIVE SUPPLY CURRENT vs. VCC INTERNAL RC OSCILLATOR, 1 MHz 1.4 1.2 1 25 C -40 C 85 C ICC (mA) 0.8 0.6 0.4 0.2 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) Figure 140. VCC (32 kHz ) ACTIVE SUPPLY CURRENT vs. VCC 32 kHz EXTERNAL OSCILLATOR 60 50 25 C 40 ICC (uA) 30 20 10 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 284 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 141. (0.1 - 1.0 MHz) IDLE SUPPLY CURRENT vs. FREQUENCY 0.1 - 1.0 MHz 0.18 0.16 0.14 0.12 5.5 V 5.0 V 4.5 V 4.0 V 3.3 V 2.7 V 1.8 V ICC (mA) 0.1 0.08 0.06 0.04 0.02 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequency (MHz) Figure 142. (1 - 20 MHz) IDLE SUPPLY CURRENT vs. FREQUENCY 1 - 24 MHz 4.5 4 3.5 5.5V 5.0V 4.5V 4.0V 3 ICC (mA) 2.5 2 1.5 3.3V 2.7V 1.8V 0 4 8 12 16 20 24 1 0.5 0 Frequency (MHz) 285 2545A-AVR-09/03 Figure 143. VCC ( RC 8 MHz) IDLE SUPPLY CURRENT vs. VCC INTERNAL RC OSCILLATOR, 8 MHz 1.6 1.4 1.2 1 85 C 25 C -40 C ICC (mA) 0.8 0.6 0.4 0.2 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) Figure 144. VCC ( RC CKDIV8 1 MHz) IDLE SUPPLY CURRENT vs. VCC INTERNAL RC OSCILLATOR, 1 MHz 0.35 0.3 0.25 85 C 25 C -40 C ICC (mA) 0.2 0.15 0.1 0.05 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 286 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 145. VCC (32 kHz ) IDLE SUPPLY CURRENT vs. VCC 32 kHz EXTERNAL OSCILLATOR 30 25 25 C 20 ICC (uA) 15 10 5 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) Figure 146. VCC ( ) POWER-DOWN SUPPLY CURRENT vs. VCC WATCHDOG TIMER DISABLED 2.5 85 C 2 ICC (uA) 1.5 1 25 C -40 C 0.5 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 287 2545A-AVR-09/03 Figure 147. VCC ( ) POWER-DOWN SUPPLY CURRENT vs. VCC WATCHDOG TIMER ENABLED 12 10 8 85 C -40 C 25 C ICC (uA) 6 4 2 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) Figure 148. VCC ( ) POWER-SAVE SUPPLY CURRENT vs. VCC WATCHDOG TIMER DISABLED 12 10 25 C 8 ICC (uA) 6 4 2 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 288 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Standby Figure 149. Standby VCC STANDBY SUPPLY CURRENT vs. VCC Low Power Crystal Oscillator 180 160 140 120 4 MHz Res. 4 MHz Xtal 2 MHz Xtal 2 MHz Res. 455kHz Res. 1 MHz Res. 6 MHz Xtal 6 MHz Res. ICC (uA) 100 80 60 40 20 32 kHz Xtal 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) Figure 150. Standby VCC STANDBY SUPPLY CURRENT vs. VCC Full Swing Crystal Oscillator 500 450 400 350 ICC (uA) 16 MHz Xtal 12 MHz Xtal 300 250 200 150 100 50 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 MHz Xtal (ckopt) 4 MHz Xtal (ckopt) 2 MHz Xtal (ckopt) VCC (V) 289 2545A-AVR-09/03 Figure 151. I/O (VCC = 5V) I/O PIN PULL-UP RESISTOR CURRENT vs. INPUT VOLTAGE VCC = 5V 160 140 120 85 C 25 C -40 C 100 IOP (uA) 80 60 40 20 0 0 1 2 3 VOP (V) 4 5 6 Figure 152. I/O (VCC = 2.7V) I/O PIN PULL-UP RESISTOR CURRENT vs. INPUT VOLTAGE VCC = 2.7V 90 80 85 C 70 60 25 C -40 C IOP (uA) 50 40 30 20 10 0 0 0.5 1 1.5 VOP (V) 2 2.5 3 290 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 153. (Reset) Reset (VCC = 5V) RESET PULL-UP RESISTOR CURRENT vs. RESET PIN VOLTAGE VCC = 5V 120 -40C 100 25C 85C 80 IRESET (uA) 60 40 20 0 0 1 2 3 4 5 6 VRESET (V) Figure 154. (Reset) Reset (VCC = 2.7V) RESET PULL-UP RESISTOR CURRENT vs. RESET PIN VOLTAGE VCC = 2.7V 70 60 -40 C 50 IRESET (uA) 25 C 85 C 40 30 20 10 0 0 0.5 1 1.5 VRESET (V) 2 2.5 3 291 2545A-AVR-09/03 Figure 155. I/O B PC5..0 D (VCC= 5V) I/O PIN SOURCE CURRENT vs. OUTPUT VOLTAGE VCC = 5V 90 80 70 60 -40 C 25 C 85 C IOH (mA) 50 40 30 20 10 0 0 1 2 3 VOH (V) 4 5 6 Figure 156. I/O B PC5..0 D (VCC = 2.7V) I/O PIN SOURCE CURRENT vs. OUTPUT VOLTAGE VCC = 2.7V 35 30 25 20 15 10 5 0 0 0.5 1 1.5 VOH (V) -40 C 25 C 85 C IOH (mA) 2 2.5 3 292 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 157. B PC5..0 D (VCC = 1.8V) I/O PIN SOURCE CURRENT vs. OUTPUT VOLTAGE VCC = 1.8V 25 C -40 C 8 7 6 9 85 C IOH (mA) 5 4 3 2 1 0 0 0.2 0.4 0.6 0.8 1 VOH (V) 1.2 1.4 1.6 1.8 2 Figure 158. I/O B PC5..0 D (VCC = 5V) I/O PIN SINK CURRENT vs. OUTPUT VOLTAGE VCC = 5V 80 25 C 70 60 50 85 C IOL (mA) 40 30 20 10 0 0 0.5 1 1.5 2 2.5 VOL (V) 293 2545A-AVR-09/03 Figure 159. I/O B PC5..0 D (VCC = 2.7V) I/O PIN SINK CURRENT vs. OUTPUT VOLTAGE VCC = 2.7V 40 35 30 25 -40 C 25 C 85 C IOL (mA) 20 15 10 5 0 0 0.5 1 1.5 2 2.5 VOL (V) Figure 160. I/O B PC5..0 D (VCC = 1.8V) I/O PIN SINK CURRENT vs. OUTPUT VOLTAGE VCC = 1.8V 14 12 10 8 6 4 2 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 -40 C 25 C 85 C IOL (mA) VOL (V) 294 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 161. I/O VCC (VIH, I/O "1") I/O PIN INPUT THRESHOLD VOLTAGE vs. VCC VIH, IO PIN READ AS '1' 3 2.5 25 C 85 C -40 C 2 Threshold (V) 1.5 1 0.5 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) Figure 162. I/O VCC (VIL, I/O "0") I/O PIN INPUT THRESHOLD VOLTAGE vs. VCC VIL, IO PIN READ AS '0' 3 2.5 85 C -40 C 25 C 2 Threshold (V) 1.5 1 0.5 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 295 2545A-AVR-09/03 Figure 163. Reset VCC (VIH,Reset "1") RESET INPUT THRESHOLD VOLTAGE vs. VCC VIH, IO PIN READ AS '1' 3 2.5 25 C 85 C -40 C 2 Threshold (V) 1.5 1 0.5 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) Figure 164. Reset VCC (VIL,Reset "0") RESET INPUT THRESHOLD VOLTAGE vs. VCC VIL, IO PIN READ AS '0' 3 2.5 2 -40 C 85 C 25 C Threshold (V) 1.5 1 0.5 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 296 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 165. Reset VCC RESET PIN INPUT HYSTERESIS vs. VCC 600 500 Input Hysteresis (mV) 400 VIL 300 200 100 0 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) BOD Figure 166. BOD (BOD 4.0V) BOD THRESHOLDS vs. TEMPERATURE BODLEVEL IS 4.0V 4.5 4.45 Rising Vcc 4.4 Threshold (V) 4.35 4.3 Falling Vcc 4.25 4.2 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 Temperature (C) 297 2545A-AVR-09/03 Figure 167. BOD (BOD 2.7V) BOD THRESHOLDS vs. TEMPERATURE BODLEVEL IS 2.7V 2.9 2.85 Rising Vcc 2.8 Threshold (V) 2.75 2.7 Falling Vcc 2.65 2.6 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 Temperature (C) Figure 168. BOD (BOD 1.8V) BOD THRESHOLDS vs. TEMPERATURE BODLEVEL IS 1.8V 1.86 1.84 Rising Vcc Threshold (V) 1.82 1.8 Falling Vcc 1.78 1.76 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 Temperature (C) 298 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 169. VCC BANDGAP VOLTAGE vs. V CC 1.1 Bandgap Voltage (V) 1.095 -40 C 1.09 85 C 1.085 1.08 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 VCC (V) Figure 170. (VCC = 5V) ANALOG COMPARATOR OFFSET VOLTAGE vs. COMMON MODE VOLTAGE VCC =5V 0.009 Analog comparator offset voltage (V) 0.008 0.007 0.006 0.005 0.004 0.003 0.002 0.001 0 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 85 C -40 C Common Mode Voltage (V) 299 2545A-AVR-09/03 Figure 171. (VCC = 2.7V) ANALOG COMPARATOR OFFSET VOLTAGE vs. COMMON MODE VOLTAGE VCC=2.7V 4 3.5 Analog comparator offset voltage 3 2.5 (mV) 2 85 C -40 C 1.5 1 0.5 0 0 0.5 1 1.5 Common Mode Voltage (V) 2 2.5 Figure 172. BOD VCC BROWNOUT DETECTOR CURRENT vs. VCC 32 30 28 26 24 22 20 18 1.5 2 2.5 3 3.5 4 4.5 5 5.5 -40 C ICC (uA) 25 C 85 C VCC (V) 300 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 173. ADC VCC (AREF = AVCC) AREF vs. VCC ADC AT 50 KHz 500 450 400 350 300 250 200 150 1.5 2 2.5 3 3.5 4 4.5 5 5.5 -40 C 25 C 85 C ICC (uA) VCC (V) Figure 174. AREF VCC AREF vs. VCC ADC AT 1 MHz 180 160 140 120 85 C 25 C -40 C ICC (uA) 100 80 60 40 20 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 VCC (V) 301 2545A-AVR-09/03 Figure 175. VCC ANALOG COMPARATOR CURRENT vs. VCC 140 -40 C 120 100 80 60 40 20 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 25 C 85 C ICC (uA) VCC (V) Figure 176. VCC ANALOG COMPARATOR CURRENT vs. VCC 140 -40 C 120 100 80 60 40 20 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 25 C 85 C ICC (uA) VCC (V) 302 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 Figure 177. Programming Current vs. VCC PROGRAMMING CURRENT vs. Vcc 14 12 10 8 6 4 2 0 1.5 2 2.5 3 3.5 4 4.5 5 5.5 -40 C 25 C 85 C ICC (mA) VCC (V) Figure 178. VCC (0.1 - 1.0 MHz ) RESET SUPPLY CURRENT vs. VCC 0.1 - 1.0 MHz, EXCLUDING CURRENT THROUGH THE RESET PULL-UP 0.18 5.5 V 0.16 5.0 V 0.14 4.5 V 0.12 ICC (mA) 4.0 V 0.1 0.08 0.06 0.04 0.02 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 3.3 V 2.7 V 1.8 V Frequency (MHz) 303 2545A-AVR-09/03 Figure 179. VCC (1 - 20 MHz ) RESET SUPPLY CURRENT vs. VCC 1 - 24 MHz, EXCLUDING CURRENT THROUGH THE RESET PULL-UP 4.5 4 3.5 3 5.5V 5.0V 4.5V ICC (mA) 2.5 2 1.5 4.0V 3.3V 1 2.7V 0.5 1.8V 0 0 4 8 12 16 20 24 Frequency (MHz) Figure 180. VCC RESET PULSE WIDTH vs. VCC 2500 2000 Pulsewidth (ns) 1500 1000 500 85 C -40 C 25 C 0 1.5 2 2.5 3 3.5 VCC (V) 4 4.5 5 5.5 304 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 (0xFF) (0xFE) (0xFD) (0xFC) (0xFB) (0xFA) (0xF9) (0xF8) (0xF7) (0xF6) (0xF5) (0xF4) (0xF3) (0xF2) (0xF1) (0xF0) (0xEF) (0xEE) (0xED) (0xEC) (0xEB) (0xEA) (0xE9) (0xE8) (0xE7) (0xE6) (0xE5) (0xE4) (0xE3) (0xE2) (0xE1) (0xE0) (0xDF) (0xDE) (0xDD) (0xDC) (0xDB) (0xDA) (0xD9) (0xD8) (0xD7) (0xD6) (0xD5) (0xD4) (0xD3) (0xD2) (0xD1) (0xD0) (0xCF) (0xCE) (0xCD) (0xCC) (0xCB) (0xCA) (0xC9) (0xC8) (0xC7) (0xC6) (0xC5) (0xC4) (0xC3) (0xC2) (0xC1) (0xC0) UDR0 UBRR0H UBRR0L UCSR0C UCSR0B UCSR0A 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - USART I/O r USART USART - UMSEL01 RXCIE0 RXC0 - UMSEL00 TXCIE0 TXC0 - UPM01 UDRIE0 UDRE0 - UPM00 RXEN0 FE0 - USBS0 TXEN0 DOR0 - UCSZ01 /UDORD0 168 172 172 - UCSZ00 / UCPHA0 - UCPOL0 TXB80 MPCM0 171/182 170 169 UCSZ02 UPE0 RXB80 U2X0 305 2545A-AVR-09/03 (0xBF) (0xBE) (0xBD) (0xBC) (0xBB) (0xBA) (0xB9) (0xB8) (0xB7) (0xB6) (0xB5) (0xB4) (0xB3) (0xB2) (0xB1) (0xB0) (0xAF) (0xAE) (0xAD) (0xAC) (0xAB) (0xAA) (0xA9) (0xA8) (0xA7) (0xA6) (0xA5) (0xA4) (0xA3) (0xA2) (0xA1) (0xA0) (0x9F) (0x9E) (0x9D) (0x9C) (0x9B) (0x9A) (0x99) (0x98) (0x97) (0x96) (0x95) (0x94) (0x93) (0x92) (0x91) (0x90) (0x8F) (0x8E) (0x8D) (0x8C) (0x8B) (0x8A) (0x89) (0x88) (0x87) (0x86) (0x85) (0x84) (0x83) (0x82) (0x81) (0x80) (0x7F) (0x7E) TWAMR TWCR TWDR TWAR TWSR TWBR ASSR OCR2B OCR2A TCNT2 TCCR2B TCCR2A OCR1BH OCR1BL OCR1AH OCR1AL ICR1H ICR1L TCNT1H TCNT1L TCCR1C TCCR1B TCCR1A DIDR1 DIDR0 7 - - TWAM6 TWINT TWA6 TWS7 - - - 6 - - TWAM5 TWEA TWA5 TWS6 5 - - TWAM4 TWSTA TWA4 TWS5 - 4 - - TWAM3 TWSTO TWA3 TWS4 - TCN2UB - 3 - - TWAM2 TWWC TWA2 TWS3 - OCR2AUB - 2 - - TWAM1 TWEN TWA1 - - OCR2BUB - 1 - - TWAM0 - TWA0 TWPS1 - TCR2AUB - 0 - - - TWIE TWGCE TWPS0 - TCR2BUB - 195 192 194 194 194 192 139 138 138 138 137 134 EXCLK - AS2 - / 2 B / 2 r A / 2(8 ) FOC2A COM2A1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FOC2B COM2A0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - COM2B1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - COM2B0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WGM22 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CS22 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CS21 WGM21 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CS20 WGM20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / 1 B / 1 B / 1 A / 1 A / 1 / 1 / 1 / 1 - FOC1A ICNC1 COM1A1 - - - FOC1B ICES1 COM1A0 - - - - - COM1B1 - ADC5D - - WGM13 COM1B0 - ADC4D - - WGM12 - - ADC3D - - CS12 - - ADC2D - - CS11 WGM11 AIN1D ADC1D - - CS10 WGM10 AIN0D ADC0D 121 121 121 121 122 122 120 120 120 119 117 216 231 306 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 (0x7D) (0x7C) (0x7B) (0x7A) (0x79) (0x78) (0x77) (0x76) (0x75) (0x74) (0x73) (0x72) (0x71) (0x70) (0x6F) (0x6E) (0x6D) (0x6C) (0x6B) (0x6A) (0x69) (0x68) (0x67) (0x66) (0x65) (0x64) (0x63) (0x62) (0x61) (0x60) 0x3F (0x5F) 0x3E (0x5E) 0x3D (0x5D) 0x3C (0x5C) 0x3B (0x5B) 0x3A (0x5A) 0x39 (0x59) 0x38 (0x58) 0x37 (0x57) 0x36 (0x56) 0x35 (0x55) 0x34 (0x54) 0x33 (0x53) 0x32 (0x52) 0x31 (0x51) 0x30 (0x50) 0x2F (0x4F) 0x2E (0x4E) 0x2D (0x4D) 0x2C (0x4C) 0x2B (0x4B) 0x2A (0x4A) 0x29 (0x49) 0x28 (0x48) 0x27 (0x47) 0x26 (0x46) 0x25 (0x45) 0x24 (0x44) 0x23 (0x43) 0x22 (0x42) 0x21 (0x41) 0x20 (0x40) 0x1F (0x3F) 0x1E (0x3E) 0x1D (0x3D) 0x1C (0x3C) ADMUX ADCSRB ADCSRA ADCH ADCL TIMSK2 TIMSK1 TIMSK0 PCMSK2 PCMSK1 PCMSK0 EICRA PCICR OSCCAL PRR CLKPR WDTCSR SREG SPH SPL SPMCSR MCUCR MCUSR SMCR MONDR ACSR SPDR SPSR SPCR GPIOR2 GPIOR1 OCR0B OCR0A TCNT0 TCCR0B TCCR0A GTCCR EEARH EEARL EEDR EECR GPIOR0 EIMSK EIFR 7 - REFS1 - ADEN 6 - REFS0 ACME ADSC 5 - ADLAR - ADATE 4 - - - ADIF 3 - MUX3 - ADIE 2 - MUX2 ADTS2 ADPS2 1 - MUX1 ADTS1 ADPS1 0 - MUX0 ADTS0 ADPS0 227 231 228 229 229 ADC ADC - - - - - - - - - - PCINT23 - PCINT7 - - - - - PRTW1 - - CLKPCE WDIF I - SP7 - - - - - SPMIE - - - - - ACD - SPIF SPIE - - - - - - - - - - PCINT22 PCINT14 PCINT6 - - - - - PRTIM2 - - - WDIE T - SP6 - - - - - (RWWSB)5. - - - - - ACBG - WCOL SPE - - - - - - - - ICIE1 - PCINT21 PCINT13 PCINT5 - - - - - PRTIM0 - - - WDP3 H - SP5 - - - - - - - - - - - ACO - - DORD - - - - - - - - - - PCINT20 PCINT12 PCINT4 - - - - r - - - - - WDCE S - SP4 - - - - - (RWWSRE)5. - PUD - - - ACI - - MSTR - PRTIM1 - - CLKPS3 WDE V - SP3 - - - - - BLBSET - - WDRF SM2 - ACIE - SPI - CPOL I/O 2 I/O 1 - - - - - - - - / 0 B / 0 A / 0(8 ) FOC0A COM0A1 TSM FOC0B COM0A0 - - COM0B1 - - COM0B0 - WGM02 - - CS02 - - CS01 WGM01 PSRASY CS00 WGM00 PSRSYNC - CPHA - SPR1 SPI2X SPR0 ACIC - ACIS1 - ACIS0 - - PRSPI - - CLKPS2 WDP2 N (SP10) 5. SP2 - - - - - PGWRT - - BORF SM1 - - PRUSART0 - - CLKPS1 WDP1 Z SP9 SP1 - - - - - PGERS - IVSEL EXTRF SM0 - - PRADC - - CLKPS0 WDP0 C SP8 SP0 - - - - - SPMEN - IVCE PORF SE - - - - - - - - - - - PCINT19 PCINT11 PCINT3 - ISC11 - - - - - - - - - OCIE2B OCIE1B OCIE0B PCINT18 PCINT10 PCINT2 - ISC10 PCIE2 - - - - - - - - OCIE2A OCIE1A OCIE0A PCINT17 PCINT9 PCINT1 - ISC01 PCIE1 - - - - - - - - TOIE2 TOIE1 TOIE0 PCINT16 PCINT8 PCINT0 - ISC00 PCIE0 - 140 122 93 79 79 79 76 29 31 44 8 10 10 244 33 214 150 150 148 22 22 96/142 17 17 17 (EEPROM ) 5. EEPROM EEPROM - - - - - - EEPM1 - - EEPM0 - - EERIE - - EEMPE - - EEPE INT1 INTF1 EERE INT0 INTF0 I/O 0 17 22 77 77 307 2545A-AVR-09/03 0x1B (0x3B) 0x1A (0x3A) 0x19 (0x39) 0x18 (0x38) 0x17 (0x37) 0x16 (0x36) 0x15 (0x35) 0x14 (0x34) 0x13 (0x33) 0x12 (0x32) 0x11 (0x31) 0x10 (0x30) 0x0F (0x2F) 0x0E (0x2E) 0x0D (0x2D) 0x0C (0x2C) 0x0B (0x2B) 0x0A (0x2A) 0x09 (0x29) 0x08 (0x28) 0x07 (0x27) 0x06 (0x26) 0x05 (0x25) 0x04 (0x24) 0x03 (0x23) 0x02 (0x22) 0x01 (0x21) 0x0 (0x20) PCIFR TIFR2 TIFR1 TIFR0 PORTD DDRD PIND PORTC DDRC PINC PORTB DDRB PINB 7 - - - - - - - - - - - - - - - - PORTD7 DDD7 PIND7 - - - PORTB7 DDB7 PINB7 - - - 6 - - - - - - - - - - - - - - - - PORTD6 DDD6 PIND6 PORTC6 DDC6 PINC6 PORTB6 DDB6 PINB6 - - - 5 - - - - - ICF1 - - - - - - - - - - PORTD5 DDD5 PIND5 PORTC5 DDC5 PINC5 PORTB5 DDB5 PINB5 - - - 4 - - - - - - - - - - - - - - - - PORTD4 DDD4 PIND4 PORTC4 DDC4 PINC4 PORTB4 DDB4 PINB4 - - - 3 - - - - - - - - - - - - - - - - PORTD3 DDD3 PIND3 PORTC3 DDC3 PINC3 PORTB3 DDB3 PINB3 - - - 2 PCIF2 - - - OCF2B OCF1B OCF0B - - - - - - - - - PORTD2 DDD2 PIND2 PORTC2 DDC2 PINC2 PORTB2 DDB2 PINB2 - - - 1 PCIF1 - - - OCF2A OCF1A OCF0A - - - - - - - - - PORTD1 DDD1 PIND1 PORTC1 DDC1 PINC1 PORTB1 DDB1 PINB1 - - - 0 PCIF0 - - - TOV2 TOV1 TOV0 - - - - - - - - - PORTD0 DDD0 PIND0 PORTC0 DDC0 PINC0 PORTB0 DDB0 PINB0 - - - 141 123 75 75 75 75 75 75 75 75 75 Note: 1. "0" I/O 2. SBI CBI 0x00 - 0x1F I/O SBIS SBIC 3. "1" AVR CBI SBI CBI SBI 0x00 - 0x1F 4. I/OINOUT 0x00 - 0x3FI/O LD ST I/O 0x20 ATmega48/88/168 64 IN OUT SRAM 0x60 - 0xFF I/O ST/STS/STD LD/LDS/LDD 5. ATmega88/168 308 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 1 2 # ADD ADC ADIW SUB SUBI SBC SBCI SBIW AND ANDI OR ORI EOR COM NEG SBR CBR INC DEC TST CLR SER MUL MULS MULSU FMUL FMULS FMULSU Rd, Rr Rd, Rr Rdl,K Rd, Rr Rd, K Rd, Rr Rd, K Rdl,K Rd, Rr Rd, K Rd, Rr Rd, K Rd, Rr Rd Rd Rd,K Rd,K Rd Rd Rd Rd Rd Rd, Rr Rd, Rr Rd, Rr Rd, Rr Rd, Rr Rd, Rr Rd Rd + Rr Rd Rd + Rr + C Rdh:Rdl Rdh:Rdl + K Rd Rd - Rr Rd Rd - K Rd Rd - Rr - C Rd Rd - K - C Rdh:Rdl Rdh:Rdl - K Rd Rd * Rr Rd Rd * K Rd Rd v Rr Rd Rd v K Rd Rd Rr Rd 0xFF - Rd Rd 0x00 - Rd Rd Rd v K Rd Rd * (0xFF - K) Rd Rd + 1 Rd Rd - 1 Rd Rd * Rd Rd Rd Rd Rd 0xFF R1:R0 Rd x Rr R1:R0 Rd x Rr R1:R0 Rd x Rr Z,C,N,V,H Z,C,N,V,H Z,C,N,V,S Z,C,N,V,H Z,C,N,V,H Z,C,N,V,H Z,C,N,V,H Z,C,N,V,S Z,N,V Z,N,V Z,N,V Z,N,V Z,N,V Z,C,N,V Z,C,N,V,H Z,N,V Z,N,V Z,N,V Z,N,V Z,N,V Z,N,V None Z,C Z,C Z,C Z,C Z,C Z,C 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 R1:R0 (Rd x Rr) << 1 R1:R0 (Rd x Rr) << 1 PC PC + k + 1 PC Z PC k PC PC + k + 1 PC Z PC k PC STACK PC STACK if (Rd = Rr) PC PC + 2 or 3 Rd - Rr Rd - Rr - C Rd - K if (Rr(b)=0) PC PC + 2 or 3 if (Rr(b)=1) PC PC + 2 or 3 if (P(b)=0) PC PC + 2 or 3 if (P(b)=1) PC PC + 2 or 3 if (SREG(s) = 1) then PCPC+k + 1 if (SREG(s) = 0) then PCPC+k + 1 if (Z = 1) then PC PC + k + 1 if (Z = 0) then PC PC + k + 1 if (C = 1) then PC PC + k + 1 if (C = 0) then PC PC + k + 1 if (C = 0) then PC PC + k + 1 if (C = 1) then PC PC + k + 1 if (N = 1) then PC PC + k + 1 if (N = 0) then PC PC + k + 1 if (N V= 0) then PC PC + k + 1 if (N V= 1) then PC PC + k + 1 if (H = 1) then PC PC + k + 1 if (H = 0) then PC PC + k + 1 if (T = 1) then PC PC + k + 1 if (T = 0) then PC PC + k + 1 if (V = 1) then PC PC + k + 1 R1:R0 (Rd x Rr) << RJMP IJMP JMP(1) RCALL ICALL CALL(1) RET RETI CPSE CP CPC CPI SBRC SBRS SBIC SBIS BRBS BRBC BREQ BRNE BRCS BRCC BRSH BRLO BRMI BRPL BRGE BRLT BRHS BRHC BRTS BRTC BRVS k k k k (Z) (Z) None None None None None None None I None Z, N,V,C,H Z, N,V,C,H Z, N,V,C,H None None None None None None None None None None None None None None None None None None None None None 2 2 3 3 3 4 4 4 1/2/3 1 1 1 1/2/3 1/2/3 1/2/3 1/2/3 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 Rd,Rr Rd,Rr Rd,Rr Rd,K Rr, b Rr, b P, b P, b s, k s, k k k k k k k k k k k k k k k k "0" "1" I/O "0" I/O "1" "1" "0" "1" "0" "1" "0" T "1" T "0" "1" 309 2545A-AVR-09/03 BRVC BRIE BRID k k k "0" if (V = 0) then PC PC + k + 1 if ( I = 1) then PC PC + k + 1 if ( I = 0) then PC PC + k + 1 None None None # 1/2 1/2 1/2 SBI CBI LSL LSR ROL ROR ASR SWAP BSET BCLR BST BLD SEC CLC SEN CLN SEZ CLZ SEI CLI SES CLS SEV CLV SET CLT SEH CLH P,b P,b Rd Rd Rd Rd Rd Rd s s Rr, b Rd, b I/O I/O T T 2 2 SREG T SREG T SREG SREG I/O(P,b) 1 I/O(P,b) 0 Rd(n+1) Rd(n), Rd(0) 0 Rd(n) Rd(n+1), Rd(7) 0 Rd(0)C,Rd(n+1) Rd(n),CRd(7) Rd(7)C,Rd(n) Rd(n+1),CRd(0) Rd(n) Rd(n+1), n=0..6 Rd(3..0)Rd(7..4),Rd(7..4)Rd(3..0) SREG(s) 1 SREG(s) 0 T Rr(b) Rd(b) T C1 C0 N1 N0 Z1 Z0 I1 I0 S1 S0 V1 V0 T1 T0 H1 H0 None None Z,C,N,V Z,C,N,V Z,C,N,V Z,C,N,V Z,C,N,V None SREG(s) SREG(s) T None C C N N Z Z I I S S V V T T H H 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 MOV MOVW LDI LD LD LD LD LD LD LDD LD LD LD LDD LDS ST ST ST ST ST ST STD ST ST ST STD STS LPM LPM LPM SPM IN Rd, P Rd, Z Rd, Z+ Rd, Rr Rd, Rr Rd, K Rd, X Rd, X+ Rd, - X Rd, Y Rd, Y+ Rd, - Y Rd,Y+q Rd, Z Rd, Z+ Rd, -Z Rd, Z+q Rd, k X, Rr X+, Rr - X, Rr Y, Rr Y+, Rr - Y, Rr Y+q,Rr Z, Rr Z+, Rr -Z, Rr Z+q,Rr k, Rr SRAM SRAM I/O Rd Rr Rd+1:Rd Rr+1:Rr Rd K Rd (X) Rd (X), X X + 1 X X - 1, Rd (X) Rd (Y) Rd (Y), Y Y + 1 Y Y - 1, Rd (Y) Rd (Y + q) Rd (Z) Rd (Z), Z Z+1 Z Z - 1, Rd (Z) Rd (Z + q) Rd (k) (X) Rr (X) Rr, X X + 1 X X - 1, (X) Rr (Y) Rr (Y) Rr, Y Y + 1 Y Y - 1, (Y) Rr (Y + q) Rr (Z) Rr (Z) Rr, Z Z + 1 Z Z - 1, (Z) Rr (Z + q) Rr (k) Rr R0 (Z) Rd (Z) Rd (Z), Z Z+1 (Z) R1:R0 Rd P None None None None None None None None None None None None None None None None None None None None None None None None None None None None None None None None 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 1 310 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 OUT PUSH POP Rr Rd P, Rr I/O P Rr STACK Rr Rd STACK None None None # 1 2 2 MCU NOP SLEEP WDR BREAK (see specific descr. for Sleep function) (see specific descr. for WDR/timer) For On-chip Debug Only None None None None 1 1 1 N/A Note: 1. ATmega168 311 2545A-AVR-09/03 ATmega48 (MHz) ATmega48V-2AI ATmega48V-2PI ATmega48V-2MI ATmega48V-2AJ(2) ATmega48V-2PJ(2) ATmega48V-2MJ(2) ATmega48-16AI ATmega48-16PI ATmega48-16MI ATmega48-16AJ(2) ATmega48-16PJ(2) ATmega48-16MJ(2) 32A 28P3 32M1-A 32A 28P3 32M1-A 32A 28P3 32M1-A 32A 28P3 32M1-A 2(3) 1.8 - 5.5 (-40C 85C) 16(3) 2.7 - 5.5 (-40C 85C) Note: 1. wafer Atmel 2. 3. P276Figure 131 P277Figure 132 32A 28P3 32M1-A 32- (1.0 mm) (TQFP) 28- 0.300" Plastic Dual Inline Package (PDIP) 32- 5 x 5 x 1.0mm 0.50 mm (MLF) 312 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ATmega88 (MHz) ATmega88V-2AI ATmega88V-2PI ATmega88V-2MI ATmega88V-2AJ(2) ATmega88V-2PJ(2) ATmega88V-2MJ(2) ATmega88-16AI ATmega88-16PI ATmega88-16MI ATmega88-16AJ(2) ATmega88-16PJ(2) ATmega88-16MJ(2) 32A 28P3 32M1-A 32A 28P3 32M1-A 32A 28P3 32M1-A 32A 28P3 32M1-A 2(3) 1.8 - 5.5 (-40C 85C) 16(3) 2.7 - 5.5 (-40C 85C) Note: 1. wafer Atmel 2. 3. P276Figure 131 P277Figure 132 32A 28P3 32M1-A 32- (1.0 mm) (TQFP) 28- 0.300" Plastic Dual Inline Package (PDIP) 32- 5 x 5 x 1.0mm 0.50 mm (MLF) 313 2545A-AVR-09/03 ATmega168 (MHz) ATmega168V-2AI ATmega168V-2PI ATmega168V-2MI ATmega168V-2AJ(2) ATmega168V-2PJ(2) ATmega168V-2MJ(2) ATmega168-16AI ATmega168-16PI ATmega168-16MI ATmega168-16AJ(2) ATmega168-16PJ(2) ATmega168-16MJ(2) 32A 28P3 32M1-A 32A 28P3 32M1-A 32A 28P3 32M1-A 32A 28P3 32M1-A 2(3) 1.8 - 5.5 (-40C 85C) 16(3) 2.7 - 5.5 (-40C 85C) Note: 1. wafer Atmel 2. 3. P276Figure 131 P277Figure 132 32A 28P3 32M1-A 32- (1.0 mm) (TQFP) 28- 0.300" Plastic Dual Inline Package (PDIP) 32- 5 x 5 x 1.0mm 0.50 mm (MLF) 314 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 32A PIN 1 B PIN 1 IDENTIFIER e E1 E D1 D C 0~7 A1 L COMMON DIMENSIONS (Unit of Measure = mm) SYMBOL A A1 A2 D D1 E MIN - 0.05 0.95 8.75 6.90 8.75 6.90 0.30 0.09 0.45 NOM - - 1.00 9.00 7.00 9.00 7.00 - - - 0.80 TYP MAX 1.20 0.15 1.05 9.25 7.10 9.25 7.10 0.45 0.20 0.75 Note 2 Note 2 NOTE A2 A Notes: 1. This package conforms to JEDEC reference MS-026, Variation ABA. 2. Dimensions D1 and E1 do not include mold protrusion. Allowable protrusion is 0.25 mm per side. Dimensions D1 and E1 are maximum plastic body size dimensions including mold mismatch. 3. Lead coplanarity is 0.10 mm maximum. E1 B C L e 10/5/2001 2325 Orchard Parkway San Jose, CA 95131 TITLE 32A, 32-lead, 7 x 7 mm Body Size, 1.0 mm Body Thickness, 0.8 mm Lead Pitch, Thin Profile Plastic Quad Flat Package (TQFP) DRAWING NO. 32A REV. B R 315 2545A-AVR-09/03 28P3 D PIN 1 E1 A SEATING PLANE L B1 e E B B2 A1 (4 PLACES) C eB 0 ~ 15 REF SYMBOL A A1 D E E1 B COMMON DIMENSIONS (Unit of Measure = mm) MIN - 0.508 34.544 7.620 7.112 0.381 1.143 0.762 3.175 0.203 - NOM - - - - - - - - - - - MAX 4.5724 - 34.798 8.255 7.493 0.533 1.397 1.143 3.429 0.356 10.160 Note 1 Note 1 NOTE Note: 1. Dimensions D and E1 do not include mold Flash or Protrusion. Mold Flash or Protrusion shall not exceed 0.25 mm (0.010"). B1 B2 L C eB e 2.540 TYP 09/28/01 2325 Orchard Parkway San Jose, CA 95131 TITLE 28P3, 28-lead (0.300"/7.62 mm Wide) Plastic Dual Inline Package (PDIP) DRAWING NO. 28P3 REV. B R 316 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 32M1-A D D1 1 2 3 0 Pin 1 ID E1 E SIDE VIEW TOP VIEW A2 A3 A1 A 0.08 C P D2 Pin 1 ID COMMON DIMENSIONS (Unit of Measure = mm) SYMBOL MIN 0.80 - - NOM 0.90 0.02 0.65 0.20 REF 0.18 0.23 5.00 BSC 4.75 BSC 2.95 3.10 5.00 BSC 4.75BSC 2.95 3.10 0.50 BSC 0.30 - - 0.40 - - 0.50 0.60 12o 3.25 3.25 0.30 MAX 1.00 0.05 1.00 NOTE 1 2 3 P A A1 E2 A2 A3 b D D1 b e L D2 E BOTTOM VIEW E1 E2 e L Notes: 1. JEDEC Standard MO-220, Fig. 2 (Anvil Singulation), VHHD-2. P 0 01/15/03 2325 Orchard Parkway San Jose, CA 95131 TITLE 32M1-A, 32-pad, 5 x 5 x 1.0 mm Body, Lead Pitch 0.50 mm Micro Lead Frame Package (MLF) DRAWING NO. 32M1-A REV. C R 317 2545A-AVR-09/03 ATmega48 Rev A ATmega48 * 1. 2.7 V EEPROM 0x00 0xFF 0xFF 318 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ATmega88 Rev A ATmega88 * 1. 2.7 V EEPROM 0x00 0xFF 0xFF 319 2545A-AVR-09/03 ATmega168 Rev A ATmega168 * 1. 2.7 V EEPROM 0x00 0xFF 0xFF 320 ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ........................................................................................................ 1 ................................................................................................ 2 ........................................................................................................ 3 ................................................................................................................... ATmega48 ATmega88 ATmega168 .......................................... Disclaimer ............................................................................................................. ............................................................................................................... 3 4 5 5 ................................................................................................ 6 AVR CPU ...................................................................................... 7 ....................................................................................................................... 7 ............................................................................................................... 7 ALU - .................................................................................................... 8 ............................................................................................................ 9 ................................................................................................... 10 ............................................................................................................. 11 ...................................................................................................... 12 ................................................................................................... 12 AVR ATmega48/88/168 ....................................................... 15 Flash .................................................................. SRAM .............................................................................................. EEPROM ......................................................................................... I/O ........................................................................................................... 15 17 19 25 ............................................................................ 26 ............................................................................................... ................................................................................................................. ............................................................................................... ............................................................................................... ................................................................................................... RC ........................................................................................ 128 kHz ............................................................................................ ............................................................................................................. ................................................................................................... / ......................................................................................... ............................................................................................... 26 27 29 30 32 32 33 34 35 35 35 ............................................................................ 38 ............................................................................................................. ADC .............................................................................................. ............................................................................................................. ............................................................................................................. 39 39 39 39 i 2545A-AVR-09/03 Standby ...................................................................................................... 40 ................................................................................................... 40 .................................................................................... 42 ...................................................................................................... 48 ...................................................................................................... 49 ............................................................... 53 ...................................................................................................... 54 ATmega48 ....................................................................................... 55 ATmega88 ....................................................................................... 57 ATmega168 ..................................................................................... 60 I/O ................................................................................................ 65 ..................................................................................................................... I/O ..................................................................................... ................................................................................................... I/O ......................................................................................... 65 66 70 82 .............................................................................................. 83 PWM 8 / 0 ............................................. 88 ..................................................................................................................... / ..................................................................................... .......................................................................................................... ...................................................................................................... ............................................................................................... ............................................................................................................. / ..................................................................................... 8 / ....................................................................... 88 89 89 90 92 93 97 99 / 0 / 1 ............................ 105 16 / 1 ...................................................................... 107 ................................................................................................................... 16 ........................................................................................... / ................................................................................... ........................................................................................................ .................................................................................................... .................................................................................................... ............................................................................................. ........................................................................................................... / ................................................................................... 16 / ................................................................... 107 110 113 113 114 116 118 119 127 129 8-bit Timer/Counter2 with PWM and Asynchronous Operation .. 136 ii ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ................................................................................................................... / ....................................................................................... ........................................................................................................ .................................................................................................... ............................................................................................. ........................................................................................................... / ................................................................................... 8 / ..................................................................... / ............................................................................... / ............................................................................... 136 137 137 138 140 141 145 147 152 156 - SPI ........................................................................... 157 SS .................................................................................................. 162 ........................................................................................................... 165 USART0 ............................................................................................ 166 ................................................................................................................... ........................................................................................................ ........................................................................................................ USART .................................................................................................. - USART ............................................................................... - USART ............................................................................... .................................................................................................... ............................................................................................. USART ....................................................................................... ............................................................................................. 166 167 170 171 173 176 179 183 184 189 SPI USART ................................................................ 193 ................................................................................................................... ........................................................................................................ SPI .......................................................................................... ........................................................................................................ ........................................................................................................ USART MSPIM .......................................................................... AVR USART MSPIM AVR SPI............................................................................................................ 193 193 194 194 196 199 201 2 ...................................................................................... 203 ................................................................................................................... 2 ...................................................................................... .................................................................................. ........................................................................... TWI .................................................................................................... TWI ............................................................................................. TWI ........................................................................................................... .................................................................................................... 203 203 204 207 209 211 215 218 iii 2545A-AVR-09/03 ............................................................................................. 231 ......................................................................................... 233 ...................................................................................... 235 AD .......................................................................................... 236 ................................................................................................................... ........................................................................................................... ......................................................................................... ................................................................................................. ADC ................................................................................................... ADC ................................................................................................... 236 238 239 242 243 247 debugWIRE ............................................................. 252 ................................................................................................................... ................................................................................................................... ........................................................................................................... Software Break Points ....................................................................... debugWIRE ........................................................................................... debugWIRE ................................................................................ 252 252 252 253 253 253 ATmega48 Flash ............................................................... 254 Flash ...................................................................................... 255 Boot Loader - Read-While-Write , ATmega88 ATmega168....................................................................................... 261 Boot Loader .............................................................................................. Boot Loader .................................................................................. Read-While-Write Read-While-Write Flash ......................................... Boot Loader .......................................................................................... Boot Loader .............................................................................................. Flash ...................................................................................... Flash .................................................................................................. 261 261 261 264 265 267 268 ..................................................................................... 276 .................................................................................. ............................................................................................................... ............................................................................................................... ........................................................................................................... ....................................................................... ................................................................................................. P ........................................................................................................ ........................................................................................................... 276 278 280 280 281 283 284 292 iv ATmega48/88/168 2545A-AVR-09/03 ATmega48/88/168 ............................................................................................ 296 *............................................................................................................. DC ............................................................................................................ ............................................................................................. .................................................................................................... 2 .............................................................................................. SPI ..................................................................................................... ADC - ........................................................................................ 296 296 298 298 300 301 303 ATmega48/88/168 - ........................................... 304 ......................................................................................... 332 ......................................................................................... 336 ............................................................................................ 339 ATmega48 ........................................................................................................ 339 ATmega88 ........................................................................................................ 340 ATmega168 ...................................................................................................... 341 ............................................................................................ 342 32A ................................................................................................................... 342 28P3 ................................................................................................................. 343 32M1-A ............................................................................................................. 344 ATmega48 ................................................................................. 345 Rev A ................................................................................................................ 345 ATmega88 ................................................................................. 346 Rev A ................................................................................................................ 346 ATmega168 ............................................................................... 347 Rev A ................................................................................................................ 347 ..................................................................................................... i v 2545A-AVR-09/03 vi ATmega48/88/168 2545A-AVR-09/03 Atmel Corporation 2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 487-2600 Atmel Operations Memory 2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 436-4314 RF/Automotive Theresienstrasse 2 Postfach 3535 74025 Heilbronn, Germany Tel: (49) 71-31-67-0 Fax: (49) 71-31-67-2340 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906, USA Tel: 1(719) 576-3300 Fax: 1(719) 540-1759 Regional Headquarters Europe Atmel Sarl Route des Arsenaux 41 Case Postale 80 CH-1705 Fribourg Switzerland Tel: (41) 26-426-5555 Fax: (41) 26-426-5500 Microcontrollers 2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 436-4314 La Chantrerie BP 70602 44306 Nantes Cedex 3, France Tel: (33) 2-40-18-18-18 Fax: (33) 2-40-18-19-60 Biometrics/Imaging/Hi-Rel MPU/ High Speed Converters/RF Datacom Avenue de Rochepleine BP 123 38521 Saint-Egreve Cedex, France Tel: (33) 4-76-58-30-00 Fax: (33) 4-76-58-34-80 Asia Room 1219 Chinachem Golden Plaza 77 Mody Road Tsimshatsui East Kowloon Hong Kong Tel: (852) 2721-9778 Fax: (852) 2722-1369 ASIC/ASSP/Smart Cards Zone Industrielle 13106 Rousset Cedex, France Tel: (33) 4-42-53-60-00 Fax: (33) 4-42-53-60-01 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906, USA Tel: 1(719) 576-3300 Fax: 1(719) 540-1759 Scottish Enterprise Technology Park Maxwell Building East Kilbride G75 0QR, Scotland Tel: (44) 1355-803-000 Fax: (44) 1355-242-743 Japan 9F, Tonetsu Shinkawa Bldg. 1-24-8 Shinkawa Chuo-ku, Tokyo 104-0033 Japan Tel: (81) 3-3523-3551 Fax: (81) 3-3523-7581 Literature Requests www.atmel.com/literature Disclaimer: Atmel Corporation makes no warranty for the use of its products, other than those expressly contained in the Company's standard warranty which is detailed in Atmel's Terms and Conditions located on the Company's web site. The Company assumes no responsibility for any errors which may appear in this document, reserves the right to change devices or specifications detailed herein at any time without notice, and does not make any commitment to update the information contained herein. No licenses to patents or other intellectual property of Atmel are granted by the Company in connection with the sale of Atmel products, expressly or by implication. Atmel's products are not authorized for use as critical components in life support devices or systems. (c) Atmel Corporation 2003. All rights reserved. Atmel (R) and combinations thereof, AVR (R), and AVR Studio (R) are the registered trademarks of Atmel Corporation or its subsidiaries. Microsoft (R), Windows (R), Windows NT(R), and Windows XP (R) are the registered trademarks of Microsoft Corporation. Other terms and product names may be the trademarks of others Printed on recycled paper. 2545A-AVR-09/03 |
Price & Availability of MEGA48MEGA88MEGA168 |
|
|
All Rights Reserved © IC-ON-LINE 2003 - 2022 |
[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy] |
Mirror Sites : [www.datasheet.hk]
[www.maxim4u.com] [www.ic-on-line.cn]
[www.ic-on-line.com] [www.ic-on-line.net]
[www.alldatasheet.com.cn]
[www.gdcy.com]
[www.gdcy.net] |